React Native 无法使用expo路由器参数传递阵列

i7uaboj4  于 6个月前  发布在  React
关注(0)|答案(2)|浏览(86)

我想把一个数组从一个屏幕传递到另一个屏幕。所以我像这样传递数组,

const navigation = useRouter();
const cars = ["Saab", "Volvo", "BMW"];
navigation.push({pathname: '/screen2', params: { carList: cars}})

字符串
在另一个屏幕(screen2)中,我这样做,

const response = useLocalSearchParams();
console.log(response.carList)


但是在这个屏幕中,我没有接收到数组,我接收到的是一个字符串,比如'Saab,Volvo,BMW',我无法访问response.carList[0]这样的项目。

ghg1uchk

ghg1uchk1#

现在我使用JSON.stringifyJSON.parse作为数组传递数据。
推送数据:

router.push({
  pathname: '/(tabs)/planner/create',
  params: {
    categories: JSON.stringify(selectedItems),
  },
})

字符串
接收数据:

const params = useLocalSearchParams<>()
const categories = JSON.parse(params.categories)

ghhkc1vu

ghhkc1vu2#

通常我使用@react-navigation/native中的useNavigation()钩子,试试这个:
例如:

type Routes = {
   routeNames: never[];
  }; 

  type NavigationProps = {
  navigate: (name: string, params?: { [key: string]: any }) => void;
  goBack: () => void;
  reset: (index: number, routeNames: Routes[]) => void;
  addListener: (v1: string, v2: any) => void;
 };

 const navigation = useNavigation<NavigationProps>();
  <TouchableOpacity
      activeOpacity={0.7}
      onPress={() =>
        navigation.navigate('screen2', {
          cars: cars,
        })
      }
  >....
  </TouchableOpacity>

字符串

相关问题