如何修复“...不是函数”错误?

Posted

技术标签:

【中文标题】如何修复“...不是函数”错误?【英文标题】:How to fix "... is not a function" error? 【发布时间】:2019-12-25 17:33:24 【问题描述】:

我正在将一个状态设置器传递给一个孩子(从 App 到 Nav),但是当我调用它时,我得到了 TypeError: ... is not a function。

我应该如何解决它?我该怎么办?

应用:

import React,  useState, useEffect  from 'react';
import './App.css';

/* Component imports */
import Nav from './components/nav/nav';
import Container from './components/container/container';

/*------------------*/

function App() 
  const [appState, setAppState] = useState("home");

    useEffect(() => 
      console.log(appState);
    , [appState])

  return (  
    <div className="App">
      <Nav state=setAppState/>
      <Container stateSetter=appState/>
    </div>
  );


export default App;

导航:

import React,  useState, useEffect  from 'react';
import './nav.css';

/* Component imports */



/*------------------*/

function Nav(props) 
    return (
        <div>
            <div className="Nav" id="nav">
                <nav>
                    <ul>
                        <li><button><span>App</span></button></li>
                        <li><button onClick=() => props.stateSetter("home")>Home</button></li>
                        <li><button onClick=() => props.stateSetter("products")>Products</button></li>
                        <li><button onClick=() => props.stateSetter("about_us")>About Us</button></li>
                        <li><button onClick=() => props.stateSetter("log_in")>Log in</button></li> 
                    </ul>
                </nav>
            </div>
        </div>
    );


export default Nav;

容器:

import React,  useState, useEffect  from 'react';
import './conatiner.css';

/* Component imports */



/*------------------*/

function Container(props) 

    const [cont_appState] = useState(props.state);

    useEffect(() => 

    , [cont_appState])

    return (
        <div>
            <div className="container">

            </div>
        </div>
    );


export default Container;

我刚开始做这个项目,我也是新手,很抱歉我的乱码。

我必须添加文字才能发布:Lorem ipsum dolor sit amet,consectetur adipisicing elit。 Aliquam placeat atque ipsa eius facilis! Quidem ad officia architecto molestias! Autem molestias molestiae deserunt tempore maxime delectus commodi cum blanditiis Inventore?

【问题讨论】:

什么不是函数?您遗漏了错误消息的重要部分。 你的代码工作得很好,你能回答@SpencerWieczorek的问题吗 【参考方案1】:

你有错别字

代替

<Nav state=setAppState />

应该是

<Nav stateSetter=setAppState />

完整的组件在哪里

function App() 
  const [appState, setAppState] = useState("home");

    useEffect(() => 
      console.log(appState);
    , [appState])

  return (  
    <div className="App">
      <Nav stateSetter=setAppState/>
      <Container stateSetter=setAppState/>
    </div>
  );

【讨论】:

感谢您的耐心等待! :)

以上是关于如何修复“...不是函数”错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 React 中的“TypeError:categories.map 不是函数”错误

如何修复summernote不是函数?

如何修复Backbone.stickit中的'this.stickit()不是函数'错误

使用 react-testing-library 测试材料 ui popper 时如何修复“TypeError:document.createRange 不是函数”错误?

如何修复 TypeError:navigation.setOptions 不是函数

如何修复 AngularJS 指令中的“jQuery 可拖动不是函数”