React JSX 选择性地将属性传递给组件

Posted

技术标签:

【中文标题】React JSX 选择性地将属性传递给组件【英文标题】:React JSX selectively pass attribute to component 【发布时间】:2021-01-05 01:14:20 【问题描述】:

此代码有效,但我不禁认为有更好的方法。我无法将扩展设置为 false,因为当我这样做时组件会中断(就像他们在 Set JSX attribute based on another JSX attribute react 中所做的那样)

另外,我需要添加更多的条件分支,这意味着代码重复

if (itemProps.Expanded == true) 
  return (
    <Accordion expanded=true>
    ...
    </Accordion >
  )

else 
  return (
    <Accordion>
    ...
    </ Accordion>
  )

有什么建议吗?

【问题讨论】:

&lt;Accordion expanded=itemProps.Expanded == true&gt; 出现什么错误? 【参考方案1】:

您可以动态创建 props 对象并使用 ...(spread) 传递 props

const props = itemProps.Expanded == true ?  expanded: true  : ;
return <Accordion ...props>...</Accordion>;

【讨论】:

【参考方案2】:

抱歉,伙计们尝试了这个,它奏效了。感谢您的宝贵时间

let expanded = undefined;
if (itemProps.Expanded) 
  expanded = true;


return (
    <Accordion expanded=expanded>
    ...
    </Accordion >
)
```

【讨论】:

这样做expanded=itemProps.Expanded ? true : undefined

以上是关于React JSX 选择性地将属性传递给组件的主要内容,如果未能解决你的问题,请参考以下文章

React styled-component 不传递道具

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

在 JSX | React 如何将 prop 传递给按钮状态,以便按钮状态可以加载新页面?

从0到1教你学会 react

React Native:如何正确地将 renderItem 项传递给 FlatList,以便它们可以在另一个组件中呈现?

React - 在下拉选择中将状态从子级传递给父级