React .setState返回类型错误

时间:2018-05-23 21:18:18

标签: javascript reactjs

我正在使用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来说还是新手。

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

您在第一行代码中将对象分配给setState,因此当您稍后尝试调用它时,它不再是函数...

this.setState = ({loading: true});

应该是

this.setState({loading: true})

答案 1 :(得分:0)

setState是一个函数,你将其更改为JavaScript Object,我想这是一个小错误,你必须写:

this.setState({loading: true})

使用它不会将其更改为其他内容。