【问题标题】:Pass props to a react-redux component wrapped in a variable将 props 传递给包装在变量中的 react-redux 组件
【发布时间】:2018-01-17 05:59:37
【问题描述】:

我的模态组件中有以下_render 方法:

  _render() {
    const {content: Content, className: customClassName} = this.props;
    let className = `${customClassName} modal-container`;
    ReactDOM.render(
      <Provider store={store}>
        <div className={className}>
          {Content}
        </div>
      </Provider>,
      this.modalTarget
    );
  }

componentDidMount调用:

  componentDidMount() {
    this.modalTarget = document.createElement('div');
    this.modalTarget.className = "modalContainer";
    this.container.appendChild(this.modalTarget);
    this._render();
  }

我想将我的模态组件收到的道具传递给Content 组件。

我已经尝试过&lt;Content {...props} /&gt;,但它会抛出:

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

Content 是一个 react-redux 组件:

class NewGroup extends Component {

  _onSubmit(values) {
    //.....
  }

  _onCancel() {
    //.....
  }

  render() {
    const { handleSubmit } = this.props;
    return (
      <div>
        <form onSubmit={handleSubmit(this._onSubmit.bind(this))}>
          {_.map(FIELDS, renderField.bind(this))}
          <button type="submit" className="btn btn-primary">Create</button>
          <button className="btn btn-primary" onClick={this._onCancel.bind(this)}>Cancel</button>
        </form>
      </div>
    );
  }
}

export default reduxForm({
  validate,
  form:'NewGroup',
  fields: _.keys(FIELDS),
  fields_def: FIELDS
})(
  connect(null, { createGroup })(NewGroup)
);

Content 是:

Object
   $$typeof: Symbol(react.element)
   _owner:null
   _self:null
   _source:null
   _store:Object
   key:null
   props:Object
   ref:null
   type:ConnectedForm()
   __proto__:Object

更新 1

内容实际上来自路由器。我有一个路由列表对象,它将路径名映射到组件,

  'group/new': {
    'path': '/group/new',
    'component': GroupList,
    'props': {
      'modal': {
        'content': <NewGroup />,
        'className': 'new-group-modal'
      }
    }
  }

【问题讨论】:

  • &lt;Content {...props} /&gt; 应该可以工作,你确定Content 是你包装的NewGroup 组件吗?您没有显示填充 content={} 道具的代码
  • 是的,我发现了问题,我必须将&lt;NewGroup /&gt; 更改为NewGroup,就像GroupList 一样。 (我更新了帖子)

标签: javascript reactjs


【解决方案1】:

在原始帖子中看不到的问题是,您将渲染的 content: &lt;Content /&gt; 组件传递给包含 _render() 的组件,而应该是 content: Content 仅传递组件类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 2017-11-17
    • 2017-04-28
    • 1970-01-01
    • 2023-01-09
    • 2017-09-14
    • 2017-02-13
    • 1970-01-01
    相关资源
    最近更新 更多