首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将props传递给在props中接收到的组件

将props传递给在props中接收到的组件
EN

Stack Overflow用户
提问于 2016-08-08 20:39:10
回答 2查看 238关注 0票数 0

我正在使用react,但我遇到了一个问题。

我有一个组件,它需要接受另一个组件作为prop,并将其他prop传递到同一个组件中。示例:

代码语言:javascript
复制
export default class Item extends React.Component {
    render() {
        return (<div onClick={this.props.onClick}>Some content.</div>)
    }
}

Item.propTypes = {
    onClick: PropTypes.func.isRequired
}

export default class Container extends React.Component {
    onClick() {
        // Do something.
    }
    render() {
        // render here the item and passing it my onClick method.
    }
}

Container.propTypes = {
    item: PropTypes.element.isRequired
}

编辑:所以我可能可以使用es5语法,这样做:

代码语言:javascript
复制
React.createElement(item, {
    onClick: this.onClick
});

但是我如何在es6中实现这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2016-08-08 21:00:26

这就是你需要做的,如果你需要通过所有的道具,你也可以使用扩展运算符。

代码语言:javascript
复制
export default class Item extends React.Component {
  render() {
    return (
      <div onClick={this.props.handleClick}>Some content.>
      </div>
      )
  }
}

Item.propTypes = {
  onClick: PropTypes.func.isRequired
}

export default class Container extends React.Component {

  render() {
    const handleClick = () => {
      // Do something.
    }
    // render here the item and passing it my onClick method.
    render () {
      return (
        <Item handleClick={handleClick} />
      );
    }
  }
}

Container.propTypes = {
  item: PropTypes.element.isRequired
}
票数 0
EN

Stack Overflow用户

发布于 2016-08-08 21:07:02

你需要传递给Container,Item组件类型和你想要分配的道具,而不是一个实例。这样您就可以在创建实例之前添加更多道具

然后你可以这样做:

代码语言:javascript
复制
class Container extends React.Component {
    static propTypes = {
        ItemType: PropTypes.func.isRequired,
        itemProps: PropTypes.object.isRequired,
    };

    onItemClick = () => {
       // do something
    };

    render() {
        const { ItemType, itemProps } = this.props;
        return <ItemType {...itemProps} onClick={this.onItemClick} />;
    }
}

class MyDisplay extends React.Component {
    render() {
        const ItemToRender = someCondition ? Item : AnotherItem;
        return <Container ItemType={ItemToRender} itemProps={{a: 1, b: 2}} />;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38829475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档