首页 > 解决方案 > React - TypeError:setActiveProject 不是函数

问题描述

我正在将状态的 setter 函数传递给组件,并且收到上述错误,说 setter 不是函数。

应用程序.js

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

项目列表.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>
  );
};

标签: reactjs

解决方案


您正在传递道具setactiveProject而不是setActiveProjectApp.js

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

推荐阅读