Reactjs 如何使酶或笑话等上下文工作
我正在向上下文传递一个函数,该函数在装入接收此上下文的组件时被调用。此函数将值设置为父组件状态 这里就是一个例子 在浏览器中,这种工作方式是这样的-第一次状态是{validation:{},然后更新为{validate:{name:'somename'}} 但在测试中,它只是第一次工作,并且状态不会更新为{validate:{name:'somename'} 我怎样才能解决这个问题 组件Reactjs 如何使酶或笑话等上下文工作,reactjs,testing,jestjs,frontend,enzyme,Reactjs,Testing,Jestjs,Frontend,Enzyme,我正在向上下文传递一个函数,该函数在装入接收此上下文的组件时被调用。此函数将值设置为父组件状态 这里就是一个例子 在浏览器中,这种工作方式是这样的-第一次状态是{validation:{},然后更新为{validate:{name:'somename'}} 但在测试中,它只是第一次工作,并且状态不会更新为{validate:{name:'somename'} 我怎样才能解决这个问题 组件 验证 export class Validation extends React.Component {
验证
export class Validation extends React.Component {
static childContextTypes = {
addValidation: PropTypes.func
};
state = {
validations: {}
};
getChildContext() {
return {
addValidation: (name, value) => {
this.setState((prevState) => ({
...prevState,
validations: { ...prevState.validations, [name]: value }
}));
}
};
}
render() {
console.log(this.state);
return this.props.children;
}
}
验证字段
export class ValidationField extends React.Component {
static contextTypes = {
addValidation: PropTypes.func
};
componentDidMount() {
const { name, validation } = this.props;
this.context.addValidation && this.context.addValidation(name, validation);
}
render() {
return <input />;
}
}
导出类验证字段扩展了React.Component{
静态上下文类型={
addValidation:PropTypes.func
};
componentDidMount(){
const{name,validation}=this.props;
this.context.addValidation&&this.context.addValidation(名称、验证);
}
render(){
返回;
}
}
试验
it(“,()=>{
常量包装器=装入(
);
expect(wrapper.state()).toBe({
验证:{
字段名:“布拉布拉”
}
});
});
it("", () => {
const wrapper = mount(
<Validation>
<ValidationField name="fieldName" validation="blabla" />
</Validation>
);
expect(wrapper.state()).toBe({
validations: {
fieldName: "blabla"
}
});
});