React Native - Чем отличается this.state.data от this.data?

Я был смущен, в чем разница this.state.data с this.data

скажем у меня есть такой код:

componentWillMount(){
    console.log(this.props.navigation.state.params.list);
    api.get('my API Url')
    .then((response)=> {
      this.setState({data: JSON.parse(response.data)[0]})
      this.data=JSON.parse(response.data)[0]
    })
    .catch((err)=>{
      console.log("axios catching error")
      Alert.alert("failed", "Retry to retrieve from API", [{text:'OK', onPress:()=>{this.componentWillMount()}}])
      console.log(err)
    })
  }

constructor(props){
    super(props); 
    this.state ={ data:[] }
    this.data=[]
  }

class Visit extends React.Component {
  render() {
    if (this.data.length==0){
      return(
        <Loader/>
      )
    }
    return (
      <Text>Visit</Text>
    );
  }
}
export default Visit;

с приведенным выше кодом, я не могу сделать <Text>Visit</Text> когда this.data уже есть массив, но с this.state.data мое приложение может рендеринга <Text>Visit</Text>,

так что я хочу знать о this.state.data с this.data,

кто-нибудь может мне объяснить?

2 ответа

Решение

this.state.data относится к data свойство текущего класса state, в то время как this.data относится к data свойство текущего класса.

Состояние компонента является тривиальной частью среды React, и если вы не можете понять это различие, я предлагаю вам проверить это.

Я также предлагаю вам проверить реакцию официальных документов, почти все, что касается React, применимо к React Native, для меня React Native почти такой же, как React, с той лишь разницей, что у вас более ограниченные компоненты в RN. Мы могли бы сказать, что RN является подмножеством React

Примечание: свойство или свойства не совпадают со свойствами компонента props определено в спецификации React

Для целей React лучше всего использовать государство. this.state.data относится к data Проп хранится в текущем состоянии компонента. Вы можете установить значение, вызвав setState метод. На другом конце this.data относится к data опора текущего класса. Вы можете изменить его значение так же, как и другие переменные класса в Javascript.

Другие вопросы по тегам