簡體   English   中英

在承諾中設置狀態時遇到問題

[英]Having trouble setting the state in a promise

我的componentDidMount()函數中有一系列 promise。 values.then(function(result)承諾中,我正在嘗試設置狀態。我收到此錯誤Unhandled Rejection (TypeError): Cannot read property 'setState' of undefined but researched this error and I need to bind my promise using一個箭頭函數,讓它可以訪問this關鍵字。

componentDidMount() {
        let general = {};
        let values = [];
        //gets selected setting form schema
        getSettingsForms().then((response) => {
            this.setState({settingsForms: response});
            general = response[this.state.selectedSetting];
        }).then(response => {
            values = getSettingsConfig(this.state.selectedSetting, general);
            values.then(function(result) {
                this.setState({
                    formSchema: result[1],
                    selectedSetting: this.state.selectedSetting,
                    settings: result[0]

                })

            })
        })
    }

問題是我不知道將箭頭函數放在這種承諾上的位置。 無論我把它放在哪里,我都會收到一條錯誤消息,說是Unexpected token, expected "{" ,然后當我嘗試放入大括號時,我又收到了另一個錯誤。

componentDidMount() {
        let general = {};
        let values = [];
        //gets selected setting form schema
        getSettingsForms().then((response) => {
            this.setState({settingsForms: response});
            general = response[this.state.selectedSetting];
        }).then(response => {
            values = getSettingsConfig(this.state.selectedSetting, general);
            values.then(function(result) => {
                this.setState({
                    formSchema: result[1],
                    selectedSetting: this.state.selectedSetting,
                    settings: result[0]

                })

            })
        })
    }

將此箭頭函數放入values.then(function(result)承諾以便我可以設置狀態的正確方法是什么?`

就像您使用的其他兩個箭頭函數一樣:

componentDidMount() {
        let general = {};
        let values = [];
        //gets selected setting form schema
        getSettingsForms().then((response) => {
            this.setState({settingsForms: response});
            general = response[this.state.selectedSetting];
        }).then(response => {
            values = getSettingsConfig(this.state.selectedSetting, general);
            values.then(result => {
                this.setState({
                    formSchema: result[1],
                    selectedSetting: this.state.selectedSetting,
                    settings: result[0]

                })

            })
        })
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM