我想在标题中添加一个"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);