我是 React 的新手,我尝试将此http://redux-form.com/5.2.5/#/getting-started?_k=vz58jr启动表单应用于我的组件,但存在问题:
未捕获的不变违规:在“Connect(ReduxForm(ContactForm))”的上下文或道具中找不到“存储”。要么将根组件包装在 a 中,要么将“store”作为道具显式传递给“Connect(ReduxForm(ContactForm))”。
我该怎么办?
我是 React 的新手,我尝试将此http://redux-form.com/5.2.5/#/getting-started?_k=vz58jr启动表单应用于我的组件,但存在问题:
未捕获的不变违规:在“Connect(ReduxForm(ContactForm))”的上下文或道具中找不到“存储”。要么将根组件包装在 a 中,要么将“store”作为道具显式传递给“Connect(ReduxForm(ContactForm))”。
我该怎么办?
我用过 redux-mock-store、react-redux、enzyme 和 chai。
例如:
注册
class Signup extends Component { ... }
Signup = reduxForm({
form: 'newUser',
fields: ['email', 'password', 'confirmPassword']
})(Signup);
Signup = connect(null, actions)(Signup);
export default Signup;
注册测试
import React from 'react';
import { shallow, mount } from 'enzyme';
import { expect } from 'chai';
import configureStore from 'redux-mock-store';
import { Provider } from 'react-redux';
import Signup from '../src/components/signup';
let wrapper;
const mockStore = configureStore([]);
const store = mockStore({});
describe('Signup', () => {
beforeEach(() => {
wrapper = mount(
<Provider store={store}>
<Signup />
</Provider>
);
});
it ('should have signup className', () => {
expect(wrapper.find('.signup')).to.have.length(1);
});
});
我相信您需要将商店传递给提供商。这是我使用 redux-form 工作的 github 存储库:https ://github.com/joshuaslate/mern-starter/blob/master/client/src/index.js#L34
这是一个关于通过提供者传递商店的视频:https ://egghead.io/lessons/javascript-redux-passing-the-store-down-with-provider-from-react-redux
所有这些示例都用 Provider 包装。如何设置 Redux 存储超出了redux-form
文档的范围。按照 Joshua 发布的链接了解相关信息。