在 React Native 中使用 Rematch Store

Posted

技术标签:

【中文标题】在 React Native 中使用 Rematch Store【英文标题】:Using Rematch Store in React Native 【发布时间】:2021-10-01 02:13:12 【问题描述】:

我正在使用 expo 在 React Native 中构建一个屏幕。我是 React Native 和 Rematch 框架的新手,我想在加载时从这个端点渲染篮球运动员的名字和姓氏:https://www.balldontlie.io/api/v1/players

这是我的models.js

import axios from "axios";

export const players = 
  state: 
    players: [],
  ,
  reducers: 
    SET_PLAYERS: (state, payload) => 
      return 
        ...state,
        players: payload,
      ;
    ,
  ,
  effects: (dispatch) => (
    async getPlayers() 
      let response = await axios.get(
        "https://www.balldontlie.io/api/v1/players"
      );
      let  data  = await response.json();
      console.log(data);
      dispatch.players.SET_PLAYERS(data);
    ,
  ),
;

store.js

import  init  from "@rematch/core";
import * as models from "./models";
const store = init( models );
export default store;

最后,我的主屏幕:

import  StatusBar  from "expo-status-bar";
import React from "react";
import  StyleSheet, Text, View  from "react-native";
import  Provider  from "react-redux";
import store from "./state_management/store";

export default function App() 
  return (
    <View style=styles.container>
      <Players />
      <StatusBar style="auto" />
    </View>
  );


const Players = () => 
  return (
    <Provider store=store>
      // PLAYER LIST HERE!!
    </Provider>
  );
;

const styles = StyleSheet.create(
  container: 
    flex: 1,
    backgroundColor: "#fff",
    alignItems: "center",
    justifyContent: "center",
  ,
);

我在网上和这里看到的大多数示例都与 onPress 操作有关,例如递增、递减等。这涉及管理来自 API 调用的数据,所以我不知道该怎么做。

【问题讨论】:

【参考方案1】:

在您使用功能组件时在主屏幕中尝试使用 useDispatch 和 useSelector 来调度和获取列表并将其映射到您的屏幕

 import  useDispatch, useSelector  from "react-redux";

 const dispatch = useDispatch();

  const responseList = useSelector(state => 
    return state.apiReducer.data
  )

在 useEffect 向模型发送动作

从我理解的问题来看,需要从模型中获取存储的列表并渲染玩家名称,请在 link 中找到相同的代码

【讨论】:

以上是关于在 React Native 中使用 Rematch Store的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 create-react-native-app 项目 (expo) 中使用 react-native-fs

React-native:如何在 React-native 中使用(和翻译)带有 jsx 的 typescript .tsx 文件?

如何在 React Native 中使用 React Native Video 显示多个视频? [关闭]

如何在React Native中使用CreateBottomTabNavigator?

使用 react-native router-flux 时,BackHandler 在 react-native 侧面菜单中不起作用

无法使用 react-native-svg 或 Svg/expo 让 Svg 显示在 react-native 中