Реквизиты доступны только для чтения, поэтому вы не можете напрямую обновлять их из компонента, который их получает.Государство - это механизм таких изменений.Звучит так, как будто вы получаете исходное состояние от родителя, поэтому есть несколько разных вещей, с которыми вы могли бы справиться.
Одна вещь могла бы состоять в том, чтобы ваша выборка происходила в родительском компоненте, обновитеродительское состояние, и передайте значение состояния этому компоненту как реквизиты.Таким образом, между реквизитом и состоянием нет конфликта.
Другая возможность - просто указать состояние, если оно правдиво, и в противном случае отступить к реквизиту.
constructor(props) {
this.state = {
username: ""
}
}
render() {
return (
<View style={{ alignItems: "center" }}>
<Text style={styles.name}>{this.state.username || this.props.username}</Text>
</View>
)
}
Это один из способов в основном работает, но React не рекомендует.
constructor(props) {
this.state = {
username: props.username
}
}
(Во всех этих случаях вы обновляете состояние при извлечении данных, как говорит Roopak PutheVeettil в своем комментарии.)
Есть более сложные вещи, которые вы можете сделать, используя componentDidUpdate()
и getDerivedStateFromProps()
, если вам действительно нужно синтезировать состояние обновления и реквизиты, которые могут меняться со временем, но вам это здесь не нужно.