0

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

未捕获的不变违规:在“Connect(ReduxForm(ContactForm))”的上下文或道具中找不到“存储”。要么将根组件包装在 a 中,要么将“store”作为道具显式传递给“Connect(ReduxForm(ContactForm))”。

我该怎么办?

4

3 回答 3

2

我用过 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);
  });

});
于 2017-01-02T13:16:27.343 回答
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

于 2016-06-01T15:34:10.343 回答
0

所有这些示例都用 Provider 包装。如何设置 Redux 存储超出了redux-form文档的范围。按照 Joshua 发布的链接了解相关信息。

于 2016-06-02T06:52:53.027 回答