在wix中反应本机导航V2如何将数据从一个屏幕传递到另一个屏幕

时间:2018-12-18 08:54:23

标签: reactjs react-native react-native-navigation

我在我们的React Native应用程序中使用 Wix react native导航V2 。 我遇到了将数据从一个屏幕传递到另一屏幕的问题。 当我选择 FLATLIST行时,第一个屏幕包含 FLATLIST ,然后我需要导航并在另一个Screen处传递行数据。

这是我的代码:

  

屏幕1:

此代码在 FLATLIST(工作正常)

上显示行数据
_renderItem = ({ item }) => {
    const text = `${item}`;
    return (
      <TouchableOpacity onPress={() => this.moveToAnotherScreen(item)}>
        <View style={styles.cardView}>
          <Text style={styles.item2}>{item.name}</Text>
          <Text style={styles.item2}>{item.Type}</Text>
          <Text style={styles.item2}>{item.mobile}</Text>

        </View>
      </TouchableOpacity>
    );
  };

这是 moveToAnotherScreen 函数

moveToAnotherScreen(item) {
    Navigation.push(this.props.componentId, {
      component: {
        name: 'ShowAnotherScreen',

      },
      passProps: {
        data: item
    }
    });
  }
  

屏幕2:

componentDidMount() {

    const params  = this.props.data
    console.log('params', params);
  }

2 个答案:

答案 0 :(得分:6)

您传递道具的语法是错误的。请尝试以下

Ext.define('Foresto.model.EditListRenters', {
  extend: 'Ext.grid.Grid',
  xtype: 'rentlist',
  requires: [ //some plugins and models
  ],
  frame: true,
  store: {
    model: 'Foresto.model.RentsListModel',
    autoLoad: true,
    pageSize: 0,
    proxy: {
      type: 'ajax',
      url: '/api/renter/',
      reader: {
        type: 'json',
        rootProperty: 'results'
      }

    }
  },
  plugins: [{
      type: //someplugins}
    ],
    /* toolbarConfig: {
    xtype:'titlebar',
    docked:'top',
    items:[{
    xtype:'button', // it is don't work
    ui:'decline',
    text:'decline',
    align: 'right',
    action:'cancel'
    }]
    }, */

    columns: [{
      text: 'id',

      dataIndex: 'id'
    }, {
      text: 'document',
      dataIndex: 'document',
      editable: true,
      flex: 1

    }, {
      text: 'document_num',
      dataIndex: 'document_num',
      editable: true
    }, {
      text: 'legal_type',
      dataIndex: 'legal_type',
      editable: true

    }, {
      text: 'fio_represent',
      dataIndex: 'fio_represent',
      editable: true
    }, {
      text: 'position_represent',
      dataIndex: 'position_represent',
      editable: true,
    }, {
      text: 'certificate',
      dataIndex: 'certificate',
      editable: true,
    }]
  });

Passprops应该位于Navigation.push(this.props.componentId, { component: { name: "ShowAnotherScreen", passProps: { data: item } } })

答案 1 :(得分:1)

moveToAnotherScreen(item) {
  Navigation.push(this.props.componentId, {
    component: {
      name: 'ShowAnotherScreen',
      passProps: {
        data: item
      }
    }
  });
}

在ShowAnotherScreen

componentDidMount() {
  console.log(JSON.stringify(this.props.item))}