我有一个“编辑”页面,当用户选择所需的颜色和图标时,请单击屏幕标题上的“保存”按钮,然后将所选的颜色和图标保存在Asyncstorage上并返回主页。
我将颜色和图标存储在“编辑”页面的状态中,并且有一个名为SaveChanges()的函数,该函数将这种颜色和图标保存在Asyncstorage上并返回到主页。
单击标题上的保存按钮时,我想调用此函数。
但是在navigationOption:
1-我无法访问此页面(如本页)
2-navigationOption在componentDidMount之前调用,因此componentDidMount中的setParam不会影响navigationOption。
componentDidMount() {
this.props.navigation.setParams({ saveChanges: this.saveChanges });
}
saveChanges=()=>{
console.warn("in save changes");
asyncstorage.SetinfoInAsyncstorage(this.props.lable,{issuer:this.state.issuerName,color:this.state.selectedColor,icon:this.state.selectedIcon}, (mymessage) =>
{
const resetAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'AllAccountInfo',params:{allaccountmessage:mymessage} })],
});
this.props.navigation.dispatch(resetAction);
});
}
static navigationOptions = ({ navigation }) => {
return {
headerRight: (
<MaterialHeaderButtons>
<Item buttonStyle={{color:'black'}} title="save" iconName="save" onPress={()=>{
navigation.getParam('saveChanges');
}} />
</MaterialHeaderButtons>
),
};
};
导航文档说我必须使用redux。但是我不想要redux,因为它会使我的应用程序复杂化。
搜索时,标题的标题会动态更改,但是看不到headerRight。