当前位置: 首页 > 面试题库 >

反应:内联有条件地将prop传递给组件

唐睿
2023-03-14
问题内容

我想知道是否有比使用if语句更好的有条件地传递道具的方法。

例如,现在我有:

var parent = React.createClass({
  propTypes: {
    editable: React.PropTypes.bool.isRequired,
    editableOpts: React.PropTypes.shape({...})
  },
  render: function() {
    if(this.props.editable) {
      return (
        <Child editable={this.props.editableOpts} />
      );
    } else {
      // In this case, Child will use the editableOpts from its own getDefaultProps()
      return (
        <Child />
      );
    }
  }
});

没有if语句,有没有办法写这个?我正在按照JSX中的一种inif-if语句的思路进行思考:

var parent = React.createClass({
  propTypes: {
    editable: React.PropTypes.bool.isRequired,
    editableOpts: React.PropTypes.shape({...})
  },
  render: function() {
    return (
      <Child 
        {this.props.editable ? editable={this.props.editableOpts} : null} 
      />
    );
  }
});

总结
:我正在尝试找到一种方法来为其定义道具Child,但要传递一个值(或执行其他操作),使得Child该道具的值仍从其Child自身值中获取getDefaultProps()


问题答案:

您的想法很贴切。事实证明,传递undefined道具与根本不包括道具相同,这仍会触发默认道具值。因此,您可以执行以下操作:

var parent = React.createClass({
  propTypes: {
    editable: React.PropTypes.bool.isRequired,
    editableOpts: React.PropTypes.shape({...})
  },
  render: function() {
    return <Child 
      editable={this.props.editable ?
                  this.props.editableOpts : 
                  undefined}
    />;
  }
});


 类似资料:
  • 我有一个父子关系的组件,我试图设置。我想让父级保留事务(React组件)的原始状态的知识,然后根据新事务是否小于原始金额来确定是否允许添加新事务。我不知道如何在单击调用时正确地将数据从一个组件传递到另一个组件。下面列出了我的原始组件。请发送帮助! "' "'

  • 我在一个组件中有一个按钮,单击我想转到另一个组件并将状态传递给该组件。 是这样的: 但它不起作用。单击“我去添加新问题url”,但组件AddNewQuestionPage不会呈现。若我不把路线放在AddQuestions组件中,而是放在应用程序组件中,它就可以工作。它是整个应用程序的主要组件,使用Switch,还设置了其他路由。 但是,如果状态问题是从应用程序组件呈现的,我不知道如何将其传递给Ad

  • 问题内容: 到目前为止,我对如何通过参数将属性从一个组件传递到另一组件的了解程度如下 //开始:我的知识范围 假设存在一些在A.jsx中调用的状态变量。我想将此传递给B.jsx,所以我执行以下操作 然后在B.jsx中,我可以做类似 当被调用时将呈现“今天的主题是天气!” //结束:我的知识范围 现在,我正在阅读带有以下代码片段的react-router教程 topic.jsx: route.jsx

  • 问题内容: 在React中,我有类似的文件 parent.js 包含文本框和按钮 child.js 包含P标签 App.js 包含父组件和子组件 问题 将“父级”上的“文本框”值传递给子级,并将其显示在子级标记中。 完整代码 堆叠 问题答案: 更新了示例以将数据传递给子组件。 https://stackblitz.com/edit/react- trmj9i?file=child.js 在下面添加

  • 我试图将类名传递给react组件以更改其样式,但似乎无法正常工作: 我试图通过传递具有各自风格的类的名称来改变药丸的风格。我是新来的,所以也许我做得不对。谢啦

  • 我有一个类型为的自定义组件,它通过以下行添加到路由中: 创建一个终结点和消费者(类型为),该终结点和消费者反过来会发出消息,这些消息将到达和管道的其余部分。 为了进行监控,我需要消费者调用一个非驼峰对象上的方法,我正在创建一个Springbean。Camel管道对性能非常敏感,因此我无法将分成两半,并将监视器调用作为Camel组件插入它们之间(我的首选解决方案,因为不必真正了解监视器)。我不愿意将