Ich bin verwirrt darüber, wie ich <input>
bei der Verwendung auf Werte zugreifen soll mount
. Folgendes habe ich als Test:
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();
});
Die Konsole wird ausgedruckt undefined
. Aber wenn ich den Code leicht ändere, funktioniert es:
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();
});
Außer natürlich, dass die input.simulate
Leitung ausfällt, da ich sie render
jetzt benutze . Ich brauche beides, um richtig zu arbeiten. Wie behebe ich das?
EDIT :
Ich sollte erwähnen, <EditableText />
ist keine kontrollierte Komponente. Aber wenn ich gehe defaultValue
in <input />
, so scheint es , um den Wert einzustellen. Der zweite Codeblock oben druckt den Wert aus. Wenn ich das Eingabeelement in Chrome überprüfe und $0.value
die Konsole eingebe, wird der erwartete Wert angezeigt.
input.render()
wird nichtreact-dom
gerendert. Es ist dies: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html