は実際に、何か間違ったことはあなたのdataSource
を設定する方法であります、あなたのコンストラクタでは、あなたが最初の時間のためにそれを設定します。それは次のようになりますdataSource: this.state.dataSource.cloneWithRows(reservationData.previous)
=>(ここでは、それは今のデータを持っていますので、それは、cloneWithRows
を持っている=>:これは、ただ一種ダミー事のあるデータがまだそれに渡されません)
にただし、後であなたがその状態をリセットつまり、this.state.dataSource
「ダミーフレーム」自体が変更されたことを意味します編、および.cloneWithRows
の次の実行を失敗します - もう.cloneWithRows
機能を持っていません)
======>SOLUTION:私の意見では
、あなたが行うことができます。
cardList.jsで
:
// Put the data-source ds here, which won't be changed
var ds = new ListView.DataSource({rowHasChanged: (row1, row2) => row1 !== row2});
class CardList extends React.Component {
constructor(props) {
super(props);
this.state = {
reservationListStatus: this.props.reservationListStatus,
dataSource: ds.cloneWithRows(/* PUT YOUR INITIAL reservationData, OR JUST a blank array '[]' will be fine*/),
};
}
..and後に、あなただけのを使用する必要があります(常に変わらないds
を保つ)、このような何か:
getReservationData() {
if (this.props.reservationListStatus === "Previous Reservations") {
this.setState({
dataSource: ds.cloneWithRows(reservationData.previous)
})
} else {
this.setState({
dataSource: ds.cloneWithRows(reservationData.current)
})
}
console.log(this.state)
}
あなたがすべき方法ですが、それはまだ動作しない場合は、ここであなたが遭遇するいくつかのエラーを投稿してください、ありがとう
HRM、おかげでそれ:私は作業コードと同様、私の要点を更新
何かをするようには思わなかった(私が言うことができる)。私はまた、状態が動的に設定されていることを確認し、あなたのように静的なオプションを使用しないようにしたいと思います。私は 'componentWillReceiveProps'を調べます! – chapeljuice