我正在使用React v 16.3.2并正在构建一个应用程序,以便与Firebase上的数据库通信,同时使用axios 0.18.0。
我期待一旦我按下某个按钮(继续),它会在加载时在屏幕上创建这个微调器效果,所以我有以下代码:
purchaseContinueHandler = () => {
this.setState = ({loading: true});
const order = {
ingredients: this.state.ingredients,
price: this.state.totalPrice,
customer: {
name: 'Name',
address: {
street: 'teststreet 1',
zipCode: '86753',
country: 'U.S.'
},
email: 'example@example.com'
},
deliveryMethod: 'fastest'
}
axios.post('/orders.json', order)
.then(response => { this.setState( { loading: false } );
})
.catch(error => {
this.setState( { loading: false } ); //**<--This is where i get the error**
});
}
我运行它并点击应用上的继续并收到错误:
未处理的拒绝(TypeError):_ this.setState不是函数
它指向上面列出的那一行。
进入this documentation并尝试实施适合他的解决方案(创建constructor()
并将this
绑定到this
),但这不起作用。< / p>
我在读这个不再自动添加到该功能但不知道如何处理这些信息,我对React来说还是新手。
有什么建议吗?
答案 0 :(得分:5)
您在第一行代码中将对象分配给setState
,因此当您稍后尝试调用它时,它不再是函数...
this.setState = ({loading: true});
应该是
this.setState({loading: true})
答案 1 :(得分:0)
setState
是一个函数,你将其更改为JavaScript
Object
,我想这是一个小错误,你必须写:
this.setState({loading: true})
使用它不会将其更改为其他内容。