、(成分コンストラクタで、初期化時)成分国有財産等の非空の配列を設定しようとし、例えば、のような:このエラーがコンソールに返され配列を反応コンポーネントの状態プロパティとして割り当てるか?
this.state = { results: ['apple','orange'] } //in the component constructor
:
この環境では割り当てのための情報源は、アレイがが空の場合という、対応
をスペックobject.This エラーがパフォーマンスの最適化であることと、してはいけません作品(しかし、すぐにあなたが非空の配列をreasignしようとして、それはバグでしょう)
だから、この作品:
this.state = { results: [] } //in the component constructor
以前のエラー時点で
this.setState({results: ['apple','orange'] }) //in a component function
を行うまで、返品させていただきます...
私は分かりません。 javascript配列も型オブジェクトであると想定されているので、状態プロパティ値として使用できませんか?
私はアンドロイドデバイスで最新の反応ネイティブバージョン(0.45.1)でテストしました。
state.resultsオブジェクトは唯一このようなリストビューで使用されています
const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 })
render() {
return (
<ListView
style={{position: 'absolute', width: 100, backgroundColor: 'white', zIndex: 3}}
keyboardShouldPersistTaps='always'
initialListSize={15}
enableEmptySections={true}
dataSource={ds.cloneWithRows(this.state.results)}
renderRow={(rowData, sectionId, rowId, highlightRow) =>
<RowWrapper styles={styles.rowWrapper} >
<TouchableOpacity
activeOpacity={0.5}
onPress={() => {this.onItemPress(this.state.results[rowId])}}
>
<Text style={styles.rowText}>{rowData}</Text>
</TouchableOpacity>
</RowWrapper>
}
/>
)
}
class RowWrapper extends Component {
constructor (props) {
super(props)
this.defaultTransitionDuration = 500
this.state = {
opacity: new Animated.Value(0)
}
}
componentDidMount() {
Animated.timing(this.state.opacity, {
toValue: 1,
duration: this.defaultTransitionDuration
}).start()
}
render() {
return (
<TouchableWithoutFeedback>
<Animated.View style={{...this.props.styles, opacity: this.state.opacity }}>
{this.props.children}
</Animated.View>
</TouchableWithoutFeedback>
)
}
}
をやるべき
をやってねえ、あなたはより多くのコードを投稿することができますか?投稿した内容は正常に動作するはずですので、エラーはあなたのコード内にあるものだと思います。あなたはthis.state.resultsを使ってどこにでもObject.assignをどこにでも投稿していますか?ありがとう –
@MattAft。私はthis.state.resultsを使用しているコードの部分で私の最初の投稿を編集しました。私はObject.assignをどこにも使わず、listviewはthis.state.resultsが読み込まれるコードの唯一の部分です(そうでなければthis.state = {results:[]}を持つコンポーネントコンストラクタにのみ表示され、 this.setState({results:['apple'、 'orange']})で上書きされるコンポーネント関数ですが、問題の発生場所は...) –