TypeError: this.props.sendKitchen 不是一个函数……为啥?

Posted

技术标签:

【中文标题】TypeError: this.props.sendKitchen 不是一个函数……为啥?【英文标题】:TypeError: this.props.sendKitchen is not a function ... why?TypeError: this.props.sendKitchen 不是一个函数……为什么? 【发布时间】:2019-10-05 17:43:58 【问题描述】:

我知道这个问题被问了很多,但我没有找到适合我的解决方案,我不知道为什么会出现这个错误。 typeError 在我的 Order (child) 组件中。我使用 react 和 react-router。

这是我的子组件:

class Order extends Component
    constructor(props)
        super(props);
        this.sendKitchen=this.sendKitchen.bind(this);
        this.state=
            name:'',
            choiceMenu:[],
            order:[],
            total:0,
            timeS:'',
            timeN:0
        
    
    sendKitchen()

        let orderString=[];
        (this.state.order).forEach(food=>orderString.push(food.name));

        let date=new Date();
        let dateString=date.getHours()+':'+date.getMinutes();
        let dateNumber=date.getTime();

        let client=
            name:this.state.name,
            delivery: false,
            total: parseInt(this.state.total),
            timeS:dateString,
            timestamp:dateNumber,
            order: orderString
        ;  
        this.props.toKitchen(client);
    
    render()
        return(

              <Button variant="success" onClick=this.sendKitchen>ENVIAR A COCINA</Button>
        )

这是我的父组件

class App extends Component
  constructor(props)
    super(props);
    this.toKitchen=this.toKitchen.bind(this);
    this.state=
      clients:[]
    
  
  toKitchen(client)
    console.log(client);
  

  render()
    return (
      <div >

        <Order
          sendKitchen=this.toKitchen/>

      </div>
    );
  

我尝试了很多解决方案,但仍然有同样的错误

编辑:我删除了 react-router 部分,我更改了传递道具的函数的名称,但仍然无法正常工作。我也将该功能更改为箭头功能,但出现相同的错误,因此我删除了该更改。

【问题讨论】:

【参考方案1】:

真是一团糟 - 它没有任何意义 - 尝试了太多选择;)

&lt;App/&gt; 通常呈现为 html,而不是 &lt;Router/&gt;

&lt;Router/&gt; 应该在&lt;App/&gt;

this.props.sendKitchen 有意义的唯一路由器案例是path='/' component=App - &lt;App/&gt; renderswithsendKitchen` 道具。对于 '/order',此属性未定义。

这里没有redux,删除标签。

【讨论】:

对不起,我不明白,你说我使用路由器的方式不对?而且我不明白为什么 sendKitchen 发送道具是错误的 传递 prop 一点都没有错,但是在定义时使用这个 prop 是有意义的 - 在未传递时期望它(错误的外部上下文)是错误的 - 是的,整体应用程序结构/使用是错误的 好的,我从我的项目中删除了路由器的所有部分,但仍然无法正常工作:(所以当你说整体应用程序结构错误时,是哪部分错误? 当应用程序渲染到文档节点时,按钮“成功”应该可以工作...更新代码

以上是关于TypeError: this.props.sendKitchen 不是一个函数……为啥?的主要内容,如果未能解决你的问题,请参考以下文章

反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map

Django TypeError - TypeError: issubclass() arg 1 必须是一个类

pyspark:TypeError:'float'对象不可迭代

Python 3.8 TypeError: can't concat str to bytes - TypeError: a bytes-like object is required, not 's

TypeError: key 必须是一个字符串,一个缓冲区或一个对象在 typeError 与 GCP 文件存在

TypeError: jQueryxxxxxx 不是函数