<input>を使用するときに値にアクセスする方法について混乱していますmount。これが私のテストとして得たものです:
it('cancels changes when user presses esc', done => {
const wrapper = mount(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.render().attr('value'));
input.simulate('focus');
done();
});
コンソールに が出力されundefinedます。しかし、コードを少し変更すると、次のように機能します。
it('cancels changes when user presses esc', done => {
const wrapper = render(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.val());
input.simulate('focus');
done();
});
もちろん、input.simulate私がrender今使っているので、回線は失敗します。正しく機能するには両方が必要です。これを修正するにはどうすればよいですか?
編集:
私が言及する必要があるの<EditableText />は、制御されたコンポーネントではありません。しかし、に渡すと、値が設定されているようですdefaultValue。<input />上記の 2 番目のコード ブロックは値を出力します。同様に、Chrome で入力要素を調べて$0.valueコンソールに入力すると、期待値が表示されます。