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】:真是一团糟 - 它没有任何意义 - 尝试了太多选择;)
<App/>
通常呈现为 html,而不是 <Router/>
<Router/>
应该在<App/>
内
this.props.sendKitchen
有意义的唯一路由器案例是path='/' component=App
- <App/> renders
with
sendKitchen` 道具。对于 '/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