redux-form找不到商店

时间:2016-06-01 13:45:40

标签: redux redux-form

我是React的新手,我尝试将此http://redux-form.com/5.2.5/#/getting-started?_k=vz58jr开始表单应用于我的组件,但是存在问题:

  

未捕获的不变违规:无法在“Connect(ReduxForm(ContactForm))”的上下文或道具中找到“store”。包装好   a中的根组件,或者明确地将“store”作为prop传递   “连接(ReduxForm(ContactForm))”。

我该怎么办?

3 个答案:

答案 0 :(得分:2)

我使用过redux-mock-store,react-redux,酶和柴。

例如:

singup

class Signup extends Component { ... }

Signup = reduxForm({
  form: 'newUser',
  fields: ['email', 'password', 'confirmPassword']
})(Signup);

Signup = connect(null, actions)(Signup);

export default Signup;

signup.test

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);
  });

});

答案 1 :(得分:1)

我相信你需要通过提供商传递商店。这是我用redux-form工作的github repo: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

答案 2 :(得分:0)

所有这些例子都是wrapped with Provider。如何设置Redux存储超出了redux-form文档的范围。按照约书亚发布的链接了解这一点。