我正在使用ReactiveDict
的应用。我的项目是用Meteor建造的,有Mantra规范。
我有一个名为Login
的React组件。这个概念是,当组件呈现时,ReactiveDict
状态被清除,因为组件呈现时没有错误。那很好。我的容器中有这个代码:
export const depsMapper = (context, actions) => ({
context: () => context,
loginUser:actions.login.loginUser,
clearState: actions.globals.clearState
});
这些是组件将执行的操作。在我的组件中:
componentWillMount(){
this.props.clearState('LOGIN_ERROR_MESSAGE');
}
最后,在我的测试代码中,我有:
it.only('should render a <Form/> component', () => {
const loginWrapper = shallow(<Login/>);
expect(loginWrapper.find(Form)).to.have.length(1);
});
当我运行npm test
时,this.props.clearState
不是函数。我该如何解决这个问题?提前谢谢。
答案 0 :(得分:0)
我认为在卸载时清除错误会更方便吗? ReactiveDict不是持久的,所以 - 在卸载时清除状态 - 如果刷新页面或卸载组件,错误将被清除。所以在安装之前没有理由清除状态。通常你会在mantrajs中做这样的事情:
export const composer = ({context, clearState}, onData) => {
const {LocalState} = context();
const error = LocalState.get('LOGIN_ERROR_MESSAGE');
onData(null, {error});
// return the function that clears the state and the state gets reset on unmount
return clearState;
};
export const depsMapper = (context, actions) => ({
context: () => context,
loginUser: actions.login.loginUser,
clearState: actions.globals.clearState
});
export default composeAll(
composeWithTracker(composer),
useDeps(depsMapper)
)(Login);