gpt4 book ai didi

reactjs - 使用 React TestUtils Simulate 选择选项

转载 作者:行者123 更新时间:2023-12-03 13:17:38 27 4
gpt4 key购买 nike

我有以下 React 组件,我想使用 TestUtils 选择我的选择 block 中的 selectElements 之一。我该怎么做?

var selectElements = ["type_a", "type_b"];

var SelectElement = React.createClass({
render: function() {
return (
<option value={this.props.type}>{this.props.type}</option>
);
}
});

var MyForm = React.createClass({
handleSubmit: function(e) {
console.log("submitted");
},
render: function () {
var selectElements = this.props.availableTypes.map(function (type) {
return (
<SelectElement key={type} type={type} />
);
});
return (
<form role="form" onSubmit={this.handleSubmit}>
<select ref="type" name="type">
<option value="">-- Choose --</option>
{selectElements}
</select>
<input type="submit" value="Search"/>
</form>
);
}
});

我已经尝试过这样做:

var myFormComponent = TestUtils.renderIntoDocument(<MyForm selectElements={selectElements} />);
var form = TestUtils.findRenderedDOMComponentWithTag(myFormComponent, 'form');
var selectComponent = TestUtils.findRenderedDOMComponentWithTag(form, 'select');

TestUtils.Simulate.change(selectComponent, { target: { value: 'type_a' } });
TestUtils.Simulate.submit(form);

但它不起作用。

最佳答案

问题可能是 Simulate.change 仅调用 select 的 onChange (该方法不存在)。我认为它实际上不会导致 select 的值发生变化,除非您在 onChange 处理程序中引起该变化。

如果您坚持使用 refs 而不是 onChange,请更改此行:

TestUtils.Simulate.change(selectComponent, { target: { value: 'type_a' } });

对此:

selectComponent.getDOMNode().value = 'type_a';

关于reactjs - 使用 React TestUtils Simulate 选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26779235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com