以下の関数では、反応コンポーネントの状態を更新しようとしています。 animalMixアイテムは配列です。私はコピーを取ってそれを更新し、元のものを上書きしようとします。新しい配列(newAnimalsHeld)が正しく更新されていることを確認しましたが、animalMixを同じ状態に設定すると反映されません。反応コンポーネント状態の配列の更新
全体のことは、ここでは文脈で見ることができます任意の助け https://codepen.io/timsig/pen/XVdbdo?editors=0010
感謝を。
removePair(){
console.log('Match!');
console.log(this.flipped);
let animalsHeld = [...this.state.animalMix];
let theMatch = this.flipped[0].props.animal;
let newAnimalsHeld = animalsHeld.map(function(animal){
if (animal.animal === theMatch) {
console.log('MATCH! Animal: ' + animal.animal + 'Match:' + theMatch);
return {};
}else{
return animal;
}
});
console.log('New Animals held: ', newAnimalsHeld);
this.setState({
animalMix: newAnimalsHeld,
doTurn: true
});
this.flipped = [];
console.log(this.state.doTurn, this.state.animalMix);
}
SETSTATEが非同期であるので、あなたはそれにconsole.log書を取得するときには、更新されていない可能性があります。https://github.com/ vasanthk/react-bits/blob/master/patterns/19.async-nature-of-setState.md edit:better link – brub
そして 'map'の代わりに' filter'を使うべきだということを付け加えます。空のオブジェクトを返す代わりに一致しません。 –
@Timbo一致した動物はどうなりますか?彼らは消え/消すべきか?または単に反転しておくべきですか? – Tuna