我正在寻找一种更好的方法来处理传递给组件Tabs
的众多道具。目前,我正在从父组件中的内容/函数处理子组件Tabs
。随着我继续添加更多内容,此道具列表将变得更长。基本上,我从我的选项卡填写输入和onChange我更新父组件中的副本。
<Tabs
nav1Title='Title 1'
nav1Content='{Nav1tab}'
onChangeNav1={this.handleChange}
nav2Title='Title 2'
nav2Content='{Nav2tab}'
onChangeNav2={this.handleChange}
nav3Title='Title 3'
nav3Content='{Nav3tab}'
onChangeNav2={this.handleChange}
onChangeText1={this.handleChange}
onChangeText2={this.handleChange}
onChangeText3={this.handleChange}
onChangeText4={this.handleChange}
onChangeText5={this.handleChange}
onChangeText6={this.handleChange}
onChangeText7={this.handleChange}
/>
更改功能:
handleChange(e) {
this.setState({[e.target.name]: e.target.value})
}
Nav1tab
子组件中的输入示例:
<FunTab handleChangeText1={this.props.onChangeText1} />
然后是FunTab
子组件中的输入:
答案 0 :(得分:0)
更简单的方法是只有一个选项卡数组并将它们映射到TabItems,如:
const tabOptions = [
{
title: "Tab title",
content: "Tab content",
onChange: this.handleChange
},
...
]
const Tabs = (tabOptions) => (
tabOptions.map(tab => (
<TabItem
title={tab.title}
content={tab.content}
onChange={tab.onChange}
key={tab.title}
/>
))
)
对于更复杂但更灵活的东西,查看“复合组件”模式(Ryan Florence对youtube谈话给出了很好的解释)。