как ждать ответа API перед отображением компонента коммутатора - PullRequest
0 голосов
/ 18 марта 2020

Моя проблема в том, что я хочу отобразить Switch с defaultvalue = {true}, если this.state.params4GInfo.status4G = 1, в противном случае Switch с defaultvalue = {false}. Но проблема здесь в том, что this.state.params4GInfo.status4G равняется undefined в начале, тогда оно принимает значение 1 после рендеринга компонента. так как мне ждать, пока this.state.params4GInfo.status4G займет 1?

Вот мой компонент:

class MyComponent extends React.Component {

    componentDidMount(){
        this.props.getParameteres4GAction()
    }


    static getDerivedStateFromProps(nextProps, prevState) {
        if (nextProps.params4GInfo !== prevState.params4GInfo && nextProps.params4GInfo) {
            return {params4GInfo: nextProps.params4GInfo,status:nextProps.params4GInfo.status4G};
        } 
        else {
            return null;
        }

    }
    render() {
      return (
        <div>

            <Form onSubmit={this.handleSubmitModeConnection}>
                    {console.log("statussss",this.state.status)}
                    <div className="sn-4GSetup-switchPos">
                        {console.log("statusssss",this.state.status)}
                        {this.state.params4GInfo.status4G !== undefined && 
                         this.state.params4GInfo.status4G == 1 ?
                            <div>
                            <Switch
                             onChange={this.changeHandlerActivied}
                             defaultChecked={true}
                      />
                            </div>:<div>
                                {console.log("i'm hereeeee")}
                            <Switch
                             onChange={this.changeHandlerActivied}
                             defaultChecked={false}
                      />
                            </div>}
                    </div>
                </Form>

         );
      }
}

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Можете ли вы изменить свои условия на

this.state.params4GInfo.status4G == undefined || this.state.params4GInfo.status4G == 1
0 голосов
/ 18 марта 2020

с учетом getParameteres4GAction () - это событие API, вам придется заставить свой цикл componentDidMount ждать завершения вызова API. Попробуйте

async componentDidMount(){
    await this.props.getParameteres4GAction()
}

поделитесь своим полным кодом .. я мог бы показать вам, как это работает ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...