从父组件中生成生成列表的本机/ Redux状态
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从父组件中生成生成列表的本机/ Redux状态相关的知识,希望对你有一定的参考价值。
我有一个我正在使用的React-Native组件,其中包含一个列表,其中包含每个项目列表中的状态。我希望从每个项目获得的状态是它是否“检查”。
在父组件中,我有按钮,然后是生成的列表,然后使用子组件为列表项构建。我如何制作它,以便在单击按钮时,它可以注销是否“检查”每个项目的状态。
我的目的是创建一个项目列表,以保存项目是否被选中。
import React, { Component } from 'react';
import { View,
Platform,
Image,
Text,
Button,
ScrollView,
ListView,
AsyncStorage
} from 'react-native';
import { connect } from 'react-redux';
import Expo from 'expo';
import SettingsTeams from '../components/SettingsTeams';
import { STATUS_BAR_HEIGHT, SCREEN_WIDTH } from '../constants';
class Settings extends Component {
componentWillMount() {
const ds = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 !== r2
});
this.dataSource = ds.cloneWithRows(this.props.leagueteams.MLS);
}
renderRow(leagueteams) {
return <SettingsTeams leagueteams={leagueteams} />;
}
state = {
appIsReady: false
}
render() {
console.log("props", this.props.leagueteams.MLS, "EPL", this.props.leagueteams.EPL)
const { leagueteams } = this.props.leagueteams
const { listStyle, listBuffer,saveButton, buttonContainer } = styles;
return (
<View style={listStyle}>
<View style={buttonContainer}>
<Button
title="Save Selection"
color="#FFFFFF"
onPress= {() => console.log("button pressed")}
style= {saveButton} />
</View>
<View style={listBuffer}>
<ListView
dataSource={this.dataSource}
renderRow={this.renderRow}
/>
</View>
</View>
);
}
}
const mapStateToProps = state => {
return { leagueteams: state.leagueteams };
};
export default connect(mapStateToProps) (Settings);
答案
听起来您可能想要将项目的checked
状态提升到Settings组件,或者,因为您使用的是Redux,所以使用存储而不是组件状态。管理checked
状态是通过将值传递到列表项并在Settings组件中处理onChange
事件来完成的。然后,当您在“设置”组件中按下按钮时,您可以从“设置”状态或“Redux”存储中读取checked
状态,无论您选择哪个。在单个列表项中维护checked
状态使得在按下按钮时难以从父级访问。有关更详细的解释,请参阅Lifting State Up上的官方文档(Web示例,但适用相同的原理)。
以上是关于从父组件中生成生成列表的本机/ Redux状态的主要内容,如果未能解决你的问题,请参考以下文章
在 ReactJs 中,从 redux 存储或从父级到子级将 props 传递给子组件的最佳实践是啥?