私が反応コンポーネントのテストケースを書いている間、私は得ています
TypeError:オブジェクト '#'の読み取り専用プロパティ 'x'に割り当てることはできません
ここで、アプリケーションの実行中は、同様のエラーはスローされません。
そのコードはかなり基本的です
this.props.defaultForm = true;
テストと実際のアプリケーションの実行で動作が異なるのはなぜですか?
テストケースを作成したい場合の回避策は何ですか?
それを達成する方法があります。
Object.assign() メソッドを使用してオブジェクトの "clone"を作成します
let clone = Object.assign({}, this.props);
その値を変更して、結果として返します。
clone.defaultForm = true;
return clone;
ただし、Object.assign()がオブジェクトの浅いコピーを作成することを考慮に入れてください。したがって、深いコピーが必要な場合は、次のアプローチを使用することをお勧めします。
let deepClone = JSON.parse(JSON.stringify(this.props));
deepClone.defaultForm = true;
return deepClone;
乾杯。
コンポーネントのプロパティを変更することはできません。読み取り専用です。
あなたがそれを変更したい場合。 connect
のredux
と関数mapStateToProps
を使用する必要があります。
詳細については、こちらをご覧ください: https://redux.js.org/basics/usage-with-react#implementing-container-components