处理父组件要孩子呈现一些自定义JSX的情况的惯用和/或更有效的方法是什么?
示例:
// Option 1
// -
const rightChild = <View />
<NavigationBar rightChild={rightChild} />
// Option 2
// -
const renderRightChild = () => <View />
<NavigationBar renderRightChild={rightChild}>
(为了简单起见,使用了lambda,我知道它对性能的影响)
答案 0 :(得分:2)
此:
const rightChild = <View /> // ... <NavigationBar rightChild={rightChild} />
...不是“将JSX传递给道具”。它正在传递一个组件实例。 JSX由const rightChild = <View />
处理(转换为React.createElement
调用),而 result (组件实例)存储在rightChild
中。这很正常,尽管通常是孩子(结束于children
道具)而不是单独的命名道具。但这两种方式都是道具,所以...
据我所知,这将是执行此操作的标准方法。
答案 1 :(得分:1)
任何一种方法都可以。当您真正想要使用渲染道具时,就是需要从NavigationBar传递的道具来渲染组件或片段。传递组件的好处是您不必传递每次都会呈现的新函数。从性能的角度来看,不进行重新渲染会容易一些。