React Navigation-在不导航到场景的情况下设置参数



我想在标题中添加一个"reload"按钮,这是通过调用setParams来实现的。问题是,这会导致TabNavigator在启动时导航到选项卡

export default class FeedScreen extends React.Component {
static navigationOptions = ({ navigation }) => {
const { params } = navigation.state;
if (params) {
return {
headerRight: <Icon.Button 
color="black" 
backgroundColor="transparent" 
underlayColor="transparent"
name="reload" 
onPress={ params.reload }
/>
};
}
}
constructor (props) {
super(props);
// We want to set attach a reload function to the navigation
this.props.navigation.setParams({
reload: this._reloadFeed.bind(this)
});
}

那么,有没有一种方法可以让setParams无法导航到这个场景,或者有没有一个方法可以在不调用setParams的情况下将函数分配给这个图标?

您是否尝试将onPress={params.reload}设置为onPress={()=>params.relload()}?

export default class FeedScreen extends React.Component {
static navigationOptions = ({ navigation }) => {
const { params } = navigation.state;
if (params) {
return {
headerRight: <Icon.Button 
color="black" 
backgroundColor="transparent" 
underlayColor="transparent"
name="reload" 
onPress={ () => params.reload() }  < -----
/>
};
}
}
constructor (props) {
super(props);
// We want to set attach a reload function to the navigation
this.props.navigation.setParams({
reload: this._reloadFeed.bind(this)
});
}

您可能正在寻找导航操作,特别是被称为"setParams"的导航操作(不要与navigation.setParams()混淆),您可以通过以下方式调度它:navigation.dispatch(myCreatedSetParamsAction)

我可以通过从头部调用一个静态函数来解决这个问题,并将该静态函数更新为componentDidMount中的重载函数。这很粗糙,但有效。

我的组件之外的功能:

let _reloadFunction = () => {
// This exists because react navigation is a mess
}

导航选项

static navigationOptions = {
headerRight: <Icon.Button 
color="black" 
backgroundColor="transparent" 
underlayColor="transparent"
name="reload" 
onPress={() => { _reloadFunction() }}
/>
}

组件中:

// Gonna update that reloadFunction so the header works
_reloadFunction = this._reloadFeed.bind(this);

相关内容

  • 没有找到相关文章

最新更新