将道具传递给散布在对象内的函数

Posted

技术标签:

【中文标题】将道具传递给散布在对象内的函数【英文标题】:Pass props to function that is spread within an object 【发布时间】:2021-01-05 20:14:26 【问题描述】:

在 React 中工作,我需要将 props 从实例化组件传递到 mockFn 这里。这是一个提取的示例,但它使用的是 Material UI,我只是对概念/如何构建它有点停留,所以我可以访问props

在下面的示例中,background 部分允许我使用箭头函数访问道具,但对于需要内联传播结果的mockFn 位,我无法将道具传递给它。

我以为我可以做 props => ...mockFn() 但这不起作用。

const mockFn = props => (
  color: props.color,
  //...
);

const StyledSelect = withStyles(
  
    root: 
      // works fine
      background: props => props.bgColor,

      // how to pass props to this mockFn?
      ...mockFn()

     // does not work
    props => ...mockFn(props)
    
  ,
  
)(Select);

<StyledSelect bgColor="green" color="red" />

https://codesandbox.io/s/material-demo-forked-res5e?file=/demo.js:586-767 上的完整示例

【问题讨论】:

【参考方案1】:

您可以在规则级别(例如root)而不是单个 CSS 属性获取道具。

这是你想要的语法:

const StyledSelect = withStyles(
  root: (props) => (
    background: props.bgColor,
    ...mockFn(props)
  )
)(Select);

【讨论】:

【参考方案2】:

我对material-ui一无所知,但我知道在样式化的组件中这是可行的:

...(props) => mockFn(props)

试一试,告诉我发生了什么

【讨论】:

以上是关于将道具传递给散布在对象内的函数的主要内容,如果未能解决你的问题,请参考以下文章

将回调函数作为道具传递给孩子

为啥我必须将道具传递给构造函数和超级[重复]

传递给子组件时道具未定义(反应钩子)

将函数作为道具传递给 Typescript React 功能组件

如何将自定义道具传递给 QueryRenderer 渲染函数?

如何将函数作为道具传递给子组件并在Vue中从那里调用它?