【发布时间】:2018-11-21 08:43:28
【问题描述】:
我最近发现了为什么我不应该对组件道具使用内联箭头函数的原因,但我不知道推荐的解决方案是什么。这是我使用函数的示例:
renderSectionFooter(isSpecialFooter) {
return (
<SomeFooter
onPress={
isSpecialFooter
? () => this.toggleModalVisibility('specialFooterIsVisible')
: () => this.toggleModalVisibility('boringFooterIsVisible')
}
/>
);
}
这让我有一个非常简单和干净的切换器功能:
toggleModalVisibility(modalIsVisible) {
this.setState({ [modalIsVisible]: !this.state[modalIsVisible] });
}
我能看到的唯一解决方法是为每个“页脚”创建一个特殊的函数,但在我看来,这违背了拥有类似函数的最佳实践。
【问题讨论】:
-
不管
true和false你的onPress 都会触发同样的方法toggleModalVisibility。那么为什么不将支票移到toggleModalVisibility内呢? -
this.toggleModalVisibility(isSpecialFooter ? 'specialFooterIsVisible' : 'boringFooterIsVisible')使用起来会不会更有意义? -
无论如何,您唯一的其他选择是使用
IFFE传递isSpecialFooter并在按下时使用它返回一个函数 -
或者,你可以在渲染之外创建一个适当的函数来处理逻辑,我相信这是应该做的
-
您能否将我们链接到那些不使用内联箭头函数作为道具的原因?
标签: javascript react-native ecmascript-6 jsx