【发布时间】:2017-12-19 10:29:29
【问题描述】:
我有一个组件可以添加待办事项 AddTodo,它可以正常工作并使用我添加的待办事项更新状态,我有一个组件 TodoItems 可以在<FlatList/> 中显示待办事项.我正在使用 React Native Tab Navigator 在组件之间切换,但我不确定如何将状态 this.state.todos 从 AddTodo 组件发送到 TodoItems 组件。
我一直在研究,但在 Tab Navigator 中找不到解决方案,但 Stack Navigator 有很多解决方案。
组件添加待办事项
export default class AddTodo extends Component {
constructor(props) {
super(props);
this.state = {
todoText: null,
todos: []
}
}
onAdd = () => {
if (this.state.todoText) {
this.state.todos.push({'todoItem': this.state.todoText});
this.setState({todos: this.state.todos});
}
}
render() {
return(
<View>
<TextInput onChangeText={(text) => {
this.setState({todoText: text});
}} />
<TouchableOpacity onPress={() => {
this.onAdd;
}}>
</View>
);
}
}
组件 TodoItems
export default class TodoItems extends Component {
constructor(props) {
super(props);
this.state = {
todosList: []
}
}
render() {
return(
<View>
<FlatList
data={this.state.todosList}
renderItem={(item, index) => {
<Text>{item.todoItem}</Text>
}}
/>
</View>
);
}
}
组件标签
import {TabNavigator} from 'react-navigation';
import AddTodo from "./AddTodo";
import TodoItems from "./TodoItems";
var myTabs = TabNavigator(
{
'AddTodo':{screen: AddTodo,},
'TodoItems':{screen: TodoItems, },
},
{
tabBarPosition: 'top',
swipeEnabled: false,
tabBarOptions: {
labelStyle:{
fontSize: 13,
fontWeight: 'bold',
},
indicatorStyle: {
borderBottomColor: '#003E7D',
borderBottomWidth: 2,
},
style:{
backgroundColor: '#F30076',
elevation: 0,
},
},
});
export default myTabs;
【问题讨论】:
-
为什么 AddTodo 和 TodoItems 是独立的组件?
-
因为我希望它们是两个不同的屏幕
标签: javascript android ios react-native