最佳答案
在使用 mount
时,我对如何访问 <input>
值感到困惑:
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 />
时,它似乎设置了值。上面的第二个代码块确实打印出了值,同样,如果我检查 Chrome 中的 input 元素并在控制台中键入 $0.value
,它会显示预期值。