在处理列表数据操作时,经常会遇到一些需要单独处理每个数据项的操作。
例如:

当用户点击
,需要将当前所属的输入框移除,示例代码:
removeEmailToItem = (e) =>{
const { form } = this.props;
const currentIndex = parseInt(e.target.dataset.index);
let keys = form.getFieldValue('keys');
keys = keys.filter((email, emailIndex) => {
return email.key !== currentIndex;
});
form.setFieldsValue({
keys
});
}
Unit test:
it('removeEmailToItem function testing', () => {
const wrapper = mount(<SendEmail {...props} />);
const mockedEvent = { target: {dataset: {index:0}} }
wrapper.find(".remove-email-item-button").first().simulate("click", mockedEvent);
expect(wrapper.node.fieldsStore.getFieldsValue().keys.length).toEqual(3);
});
这里用到simulate这个方法。
simulate(event, args)
参数
event (String): 被模拟触发的事件(例如:click/submit)
…args (Any [optional]): 传递给事件处理器的模拟event object。