Как я могу отправить массив в качестве реквизита, используя this.props.navigation.navigate? - PullRequest
0 голосов
/ 04 июля 2018

Мой массив

     this.state={
          locations:[
              {name: 'kerala'},
              {name: 'maharashtra'},
              {name: 'tamilnadu'},
           ]} 

и мой компонент

    <TouchableWithoutFeedback
        onPress={(e)=>this.props.navigation.navigate('MultiSelector',{
        locations:this.state.locations})}>
       <View><Text>select</Text></View>   
     </TouchableWithoutFeedback>

Я отправляю реквизит, как указано выше.

и компонент мультиселектора похож на

     render(){
        const { params} = this.props.navigation.state;
        const { navigation } = this.props;
        const locations = navigation.getParam('locations','kerala')
        return (
          <View style={styles.container}>
          {
            locations.map((item,index)=>{
              return(
             <View key={index}><Text>{item.name}</Text>
             </View>)
            })
           }
          </View>
        )

Я не получил массив местоположений в качестве реквизита в мультиселекторе, он принимает только значение по умолчанию (когда я тестировал). и это делает ошибку location.map не функция. Может кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

вы можете сделать что-то вроде этого:

<TouchableWithoutFeedback
    onPress={(e)=>this.props.navigation.navigate('MultiSelector',{...this.state.locations})}> //change your code to use ...
   <View><Text>select</Text></View>   
</TouchableWithoutFeedback>

а остальное зависит от вас

0 голосов
/ 04 июля 2018

Вы можете получить доступ к этому, используя:

const locations = this.props.navigation.state.params.locations;

Или

Использовать библиотеку StackNavigatorHelper:

StackNavigator({
     Home: { screen: StackNavigatorHelper.paramsToProps(Home) },
     MultiSelector: { screen: StackNavigatorHelper.paramsToProps(MultiSelector) }
});

Ссылка на библиотеку: https://github.com/dayitv89/react-navigation-helper

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...