Я сделал оператор условного рендеринга в реакции. Условие, которое я проверяю, основано на ответе сервера. Если условие выполнено, я должен отобразить некоторые компоненты пользовательского интерфейса, иначе другой пользовательский интерфейс. Итак, проблема в том, что я когда-либо получаю от сервера, работает только другая часть. Я также дважды проверил response
.
обновлен код
export default class ViewStatus extends Component {
constructor(props) {
super(props);
this.initialState = {
progressData: [],
};
this.state = this.initialState;
}
componentWillMount(){
fetch('http://192.168.1.2:3000/api/progress',{
method:'POST',
headers:{
'Accept': 'application/json',
'Content-Type':'application/json'
},
body:JSON.stringify({
work_type:this.props.work_type
})
})
.then(response => response.json())
.then((responseData) => {
this.setState({
progressData:responseData[0]
});
});
}
render() {
const isResponseData = this.state.progressData == '1' ? this.renderDone() : this.renderInProgress()
console.log(this.state.progressData);
return(
<View>
{isResponseData}
</View>
);
}
renderInProgress(){
return(
<View>
<Text>In Progress</Text>
<Text>Worker will approach you within 24 hrs.</Text>
</View>
);
}
renderDone(){
return(
<View>
<Text>Successfull</Text>
<Text>Are you satisfied with the work .If yes please mark done.</Text>
</View>
);
}
progressData
в рендере. Сначала я получаю пустой массив, но затем получаю ответ. Почему так, пожалуйста, проверьте это i.stack.imgur.com/p7Xgi.png . Также обновил мой код выше - person Linu Sherin   schedule 17.10.2018componentDidMount
, хотя получаю то же самое. Первоначально массив будет пустым, но затем я получу значение. Есть ли проблема с установкой состояния в виде массива при запуске моего кода? - person Linu Sherin   schedule 17.10.2018progressData
- это массив, ваше условие должно бытьthis.state.progressData.length > 0
- person Ravi   schedule 17.10.2018progressData:responseData[0]
в обещании получения. - person Linu Sherin   schedule 17.10.2018status=3
? - person Linu Sherin   schedule 17.10.2018&&
для и условияthis.state.progressData.length>0 && status==3
- person Ravi   schedule 17.10.2018else if
.if (status === '1){ render some ui } else if(status === '2'){ render som ui} else { render some ui}
. Я пытаюсь сделать что-то вроде этого. Но здесь, когда я проверил только условиеif else
, другая часть работает. Я думаю, что это может быть проблемой с установкойprogressData
в качестве состояния. Потому что, как я сказал ранее Сначала я получаю пустой массив, затем получает только значение. В чем может быть проблема? - person Linu Sherin   schedule 17.10.2018