Реагировать - TypeError: setActiveProject не является функцией

avatar
ChrisBull
8 августа 2021 в 21:19
27
1
0

Я передаю функцию установки для состояния вниз компоненту и получаю указанную выше ошибку, говорящую, что установка не является функцией.

App.js

const App = () => {
  const [activeProject, setActiveProject] = useState();
  return (
    <div className="app-container">
      <ProjectList
        activeProject={activeProject}
        setactiveProject={setActiveProject}
      />
    </div>
  );
};

ProjectList.js

const ProjectList = ({ activeProject, setActiveProject }) => {
  const [projectList, setprojectList] = useState([]);
  useEffect(() => {
    axios.get('http://localhost:1337/api/projects').then((allProjects) => {
      setprojectList(allProjects.data);
    });
  }, []);
  return (
    <ThemeProvider theme={THEME}>
      <div className="projectlist">
        {projectList.map((project) => (
          <Button
            variant="outlined"
            value={project.name}
            key={project._id}
            onClick={(e) => setActiveProject(e.target.value)}
          >
            {project.name}
          </Button>
        ))}
      </div>
    </ThemeProvider>
  );
};
Источник

Ответы (1)

avatar
Sebastián Espinosa
8 августа 2021 в 21:36
0

Вы передаете реквизит setactiveProject вместо setActiveProject в App.js

const App = () => {
  const [activeProject, setActiveProject] = useState();
  return (
    <div className="app-container">
      <ProjectList
        activeProject={activeProject}
        setactiveProject={setActiveProject} // <- here
      />
    </div>
  );
};