我有两个组件。第一个组件是主组件,它的标题为'Select'/'Unselect‘
export default class Contacts extends React.Component {
constructor(props) {
super(props);
this.state = { check: 0 };
}
oneItem() {
this.setState({ check: this.state.check === 0 ? 1 : 0 });
}
render() {
const { check } = this.state;
const infoUserLists = UserList;
const dataUserList = infoUserLists.map((infoUserList, index) => <InfoUserList
key={`infu_${index + 1}`}
infoUserList={infoUserList}
selectAll={this.state.check}
/>);
return (
<View>
<View>
<TouchableOpacity onPress={() => this.oneItem()}>
<NormalText label={check === 0 ? 'Select All' : 'Unselect'} />
</TouchableOpacity>
{dataUserList}
</View>
);
}
}
我还有一个子组件,当用户单击"onPush"
function - title Select All/Unselect时,应该会发生变化。所以用户点击了"InfoUserList"
组件,但是在主"Contacts"
组件中这个标题的状态改变了。
export default class InfoUserList extends React.Component {
constructor(props) {
super(props);
this.state = { check: 0, label: 'Select All' };
}
onPush() {
this.setState({ check: this.state.check === 0 ? 1 : 0 });
}
render (){
const { infoUserList, selectAll } = this.props;
const { check } = this.state;
return (
<View key={infoUserList.name}>
<TouchableOpacity onPress={() => this.onPush()}>
<Image source={ check === 1 || selectAll === 1 ? iconsLnk.choose : iconsLnk.plus } />
</TouchableOpacity>
</View>
);
}
}
发布于 2017-08-21 07:05:50
若要将子更改通知父对象,需要将事件处理程序从父对象传递给子对象,然后在事件发生时使子对象调用事件处理程序方法。
onInfoUserListCheckChange() { //在这里做点什么}
注意:您可能需要在父构造函数中绑定事件处理程序this才能访问它。
this.onInfoUserListCheckChange = onInfoUserListCheckChange.bind(this);
if (this.props.onCheckChange) { this.props.onCheckChange( //检查的值);}
}
< InfoUserList onCheck={this.onCheckChange} />
https://stackoverflow.com/questions/45790784
复制相似问题