使用React组件进行ES6对象解构澄清

问题描述 投票:-1回答:3

我有一个关于JS中的对象解构的问题。在下面的代码中,我假设组件布局已经分配了值布局(使用小写)。但是布局的值未定义且正在使用布局。

const MustBeAuthenticated = ({ layout: Layout, ...rest }) => {
  if (!isAuthenticated()) {
    return redirectToLogin({...rest})
  }
  return (
    <Layout {...rest} />
  )
}

我尝试使用({ Layout, ...rest })提取组件,但我再次抛出一个未定义的错误。如果我误解了某些东西,我只是想澄清一下。

javascript reactjs ecmascript-6
3个回答
1
投票
function logmsg({logMessage: LogMessage, ...rest}) {
    console.log(LogMessage); // prints 'hi'
    console.log(rest); // prints {bye: 'bye'}
}

logmsg({logMessage: 'hi', bye: 'bye'});

这工作正常。


0
投票

我想你会想要使用React API中的cloneElement。您将布局存储在变量中,如果要返回它,则需要使用它,而不是布局组件。

像这样的东西:

const MustBeAuthenticated = ({layout, ...rest}) => {
  if (!isAuthenticated()) {
    return redirectToLogin({...rest})
  }
  return (
    React.cloneElement(
      layout,
      rest,
    )
  )
}

这会给你这样的东西

<element.type {...element.props} {...props}>{children}</element.type>

© www.soinside.com 2019 - 2024. All rights reserved.