Я смущен тем, как получить доступ к значению <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 />
, он, кажется, устанавливает значение. Второй блок кода выше распечатывает значение, а также, если я проверяю входной элемент в Chrome и набираю $0.value
в консоли, он показывает ожидаемое значение.