reactjs中如何将可选元素作为prop传递给组件

How to pass optional elements to a component as a prop in reactjs(reactjs中如何将可选元素作为prop传递给组件)
本文介绍了reactjs中如何将可选元素作为prop传递给组件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试找出正确的反应"方式将作为元素的可选道具传递给容器组件,该组件的处理方式与该组件的子组件不同.

举个简单的例子,我有一个 Panel 组件,它渲染它的子组件,它还有一个可选的title"道具(为了这个例子,它是一个元素而不是一个字符串),它被特别渲染(放在一个特殊的地方,在保持抽象的同时有特殊的行为.

一种选择是让一个组件从子项中拉出并专门渲染:

<面板><标题>一些东西</Title>

其他一些东西</div></面板>

但是,把孩子们拉出来分开处理似乎很奇怪.

这通常在反应中是如何处理的,我什至认为这是正确的方式

解决方案

你不需要做任何特别的事情.只需将标题组件作为道具传递,然后在您希望呈现的任何地方使用 {this.props.title}:

类面板扩展 React.Component {使成为() {返回 

{this.props.title}<div>一些其他的东西......</div></div>;}}类 App 扩展 React.Component {使成为() {var title = <Title>我的标题</Title>;return <面板标题={title}/>;}}

如果您没有为 title 属性传递任何值(或者如果该值为 falsenullundefined) 那么那里什么都不会渲染.

这是 React 中相当常见的模式.

I am trying to figure out the proper "react" way to pass in an optional prop that is an Element to a container component, that is handled differently from the children of that component.

For a simple example, I have a Panel component, which renders its children, that also has an optional "title" prop (which is an element rather than a string, for the sake of the example) that gets specially rendered (put in a special spot, with special behaviors in while maintaining the abstraction.

One option is to have a component which is pulled out of the children and rendered specially:

<Panel>
   <Title> some stuff</Title>
   <div> some other stuff</div>
</Panel>

But it seems wierd to have the children pulled out and handled separately like that.

How is this normally handled in react, and am I even thinking about this the right way

解决方案

You don't need to do anything special. Just pass the title component as a prop, and then use {this.props.title} wherever you want it to be rendered:

class Panel extends React.Component {
  render() {
    return <div>
      {this.props.title}
      <div>Some other stuff...</div>
    </div>;
  }
}

class App extends React.Component {
  render() {
    var title = <Title>My Title</Title>;
    return <Panel title={title}/>;
  }
}

If you don't pass any value for the title prop (or if the value is false, null, or undefined) then nothing will be rendered there.

This is a fairly common pattern in React.

这篇关于reactjs中如何将可选元素作为prop传递给组件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)