RNRF-如何使用反应本机路由器流量更新路由器中的组件道具?

时间:2018-07-08 05:52:50

标签: react-native redux react-native-router-flux

我在本机应用程序中使用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结果。

1

0 个答案:

没有答案