我在本机应用程序中使用RNRF进行导航。目前,我的应用程序仅包含一页。
我想做什么:
从RNRF场景生成的菜单栏中,我附加了一个称为“过滤器”的右键。我希望用户点击它,就会出现一个模态。
Router.js
import React from 'react';
import { Scene, Router, Actions } from 'react-native-router-flux';
import EventListPage from './components/EventListPage';
const RouterComponent = () => {
return (
<Router>
<Scene key="root" hideNavBar>
<Scene key="eventListView">
<Scene
key="event"
component={EventListPage}
title="Event List"
rightTitle="Filter"
onRight={() => {
Actions.refresh({ searchModalVisible: true });
}
}
initial
/>
</Scene>
</Scene>
</Router>
);
};
export default RouterComponent;
EventListPage.js
import React, { Component } from 'react';
import { View } from 'react-native';
import { connect } from 'react-redux';
import EventList from './EventList';
import SearchModal from './SearchModal';
class EventListPage extends Component {
componentWillMount() {
}
componentWillReceiveProps(nextProps) {
console.log(nextProps );
}
render() {
return (
<View style={{ flex: 1 }}>
<SearchModal visible={this.props.searchModalVisible} />
<EventList />
</View>
);
}
}
const mapStateToProps = (state) => {
const { searchModalVisible } = state.searchModal;
return { searchModalVisible };
};
export default connect(mapStateToProps)(EventListPage);
问题: 1)单击菜单栏上的onRightButton的最佳方法是什么,使模式显示出来?我应该在router.js中调度一个动作吗?还是应该调用Actions.refresh()?
2)如果我应该在router.js中调度一个动作,谁能教我该怎么做?我试图将路由器连接到动作生成器,但是当我调用this.props.something时,它始终是未定义的。
3)在RNRF教程中,我看到Actions.dispatch可以发送带有更新道具的重新加载组件。但是,我发现它只是更新导航道具,而不是组件道具。我的组件是否应该依靠导航道具来确定要显示的内容,而不是本地道具?下面是我的componentWillReceiveProps的console.log结果。