reactjs - 将渲染 Prop 添加到功能性 React 子组件中

标签 reactjs

我想向组件中的所有嵌套子组件添加渲染 Prop 。当我使用时:

const doSomething = () => console.log('\\o/')

const ParentElement = ({ children }) => (
    <div>
        { children.map(child => React.cloneElement(child, { doSomething })) }
    </div>
)

我收到错误:

Warning: React does not recognize the `doSomething` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `dosomething` instead. If you accidentally passed it from a parent component, remove it from the DOM element.

本质上,我正在尝试为每个 child 重新创建这样的东西:

const ChildElement = ({ doSomething }) => (<div onWhatever={doSomething}>...</div>)

附加这些渲染 Prop 的正确方法是什么?

最佳答案

您似乎只需要设置正确的 Prop 名称({ doSomething }{ doSomething: doSomething } 的简写),但从技术上讲,您 children 是一个不透明的结构,因此您可能还想使用 React.children:

<div>
  {React.Children.map(children, child => 
    React.cloneElement(child, { onWhatever: doSomething })
  )}
</div>

关于reactjs - 将渲染 Prop 添加到功能性 React 子组件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56051617/

相关文章:

javascript - React Native - Firebase onSnaphot + FlatList 分页

javascript - Graphql 和 Relay 可扩展性

javascript - 由子路由和在其之上渲染的页面驱动的react-router基础组件

javascript - <head> 使用浏览器打开时不加载脚本

javascript - ReactJS - 用 '0' 覆盖空格

css - 根据部署加载不同的 CSS

javascript - this.setState 不是函数

reactjs - 将 native 日期从 int 转换为日期

javascript - 使用属性名称更新对象属性中的数组

reactjs - React + Reactstrap + CSS 模块 + Webpack