如何通过redux-thunk中的fetching操作访问状态?

sam1024

我是新来的反应。在我的React应用程序中,我有一个列出所有产品项的产品组件。fetch function从服务器上被处理redux-thunk但我无法访问state组件中的,请'products'始终注意变量-is undefined这是获取数据的正确方法吗?

在我Products.js

import Spinner from '../../components/Spinner/Spinner';
import { connect } from 'react-redux';
import { GetProductDataAction } from '../../redux/Product/Product.actions';

class Products extends React.Component {
    constructor(props) {
        super(props);

        this.state = {
            loading: true,
            products: [],
        }
    }

    async componentDidMount() {
        const product = await this.props.getProductsData();

        this.setState({
            products: this.state.product,
            loading: false
        })
    }

    render() {
        const { product } = this.state;
        return (
            <>
                {
                    this.state.loading || !this.state.products ?
                        <Spinner />
                        :
                            <section className="products-overview-container">
                                    <div className="product-container">
                                        {
                                            products.map(({ ...otherProps }) => {
                                                return <Product key={otherProps._id} 
                                               {...otherProps} />
                                            })
                                        }
                                    </div>
                            </section>
                }

            </>
        );
    }
}

const mapStateToProps = (state) => ({
    products: state.product,
});

const mapDispatchToProps = (dispatch) => {
    return {
        getProductsData: () => {
            dispatch(GetProductDataAction());
        },
    };
};

export default connect(
    mapStateToProps,
    mapDispatchToProps
)(Products);

在我的Product.action.jsx中,

import axios from "axios";
import ProductActionTypes from './Product.types';

export const GetProductDataAction = () => {
    return async (dispatch) => {
        try {
            const res = await axios.get("http://127.0.0.1:3000/products");
            const { data } = res;
            dispatch({
                type: ProductActionTypes.GET_PRODUCT_DATA_SUCCESS,
                payload: data
            });
            console.log('Getting Tour Data Successfully');
        } catch (error) {
            // error code
        }
    };
};

塔吉·哈瓦里(Taghi Khavari)

这是您需要进行的更改:

class Products extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      loading: true,
      products: []
    };
  }

  async componentDidMount() {
    const products = await this.props.getProductsData();

    this.setState({
      products,
      loading: false
    });
  }

  render() {
    const { products } = this.state;
    return (
      <>
        {this.state.loading || !this.state.products ? (
          <Spinner />
        ) : (
          <section className="products-overview-container">
            <div className="product-container">
              {products.length && products.map(({ ...otherProps }) => {
                return <Product key={otherProps._id} {...otherProps} />;
              })}
            </div>
          </section>
        )}
      </>
    );
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过Redux操作访问组件状态

来自分类Dev

React / TypeScript / Redux / Thunk操作未调度,状态未更新

来自分类Dev

在完成useEffect中的提取之前,在卸载组件时如何使用redux thunk清理redux状态?

来自分类Dev

如何通过参数调用redux动作并从reducer进行访问?

来自分类Dev

Javascript Redux-如何通过ID从存储中获取元素

来自分类Dev

如何通过钩子在React Redux中取消Axios请求?

来自分类Dev

我如何通过玩笑在 redux 的 mapDispatchToProps 中测试箭头函数

来自分类Dev

如何通过传递有效负载的组件在Redux中设置状态?

来自分类Dev

Redux:通过创建浅表副本来改变状态如何在reducer中引起问题?

来自分类Dev

如何通过redux将状态传递给Flutter中的BottomNavigationBar页面?

来自分类Dev

如何响应Redux中的状态更改并调度其他操作?

来自分类Dev

如何响应Redux中的状态更改并调度其他操作?

来自分类Dev

如何使用thunk和useDispatch(react-redux挂钩)从操作中返回承诺?

来自分类Dev

IO操作中的通过状态

来自分类Dev

IO操作中的通过状态

来自分类Dev

Redux Thunk 如何实现

来自分类Dev

如何在没有Redux形式的情况下通过缩减器和操作更新输入值状态

来自分类Dev

通过NavigatorIOS传递Redux状态

来自分类Dev

如何使用 Jest Mock 模块测试 Redux Thunk 异步操作

来自分类Dev

如何通过ComponentDidMount()中调用的函数访问状态集

来自分类Dev

如何从 Vuex 操作访问 Vuex 状态属性?

来自分类Dev

Redux Thunk和异步操作

来自分类Dev

通过 Redux 访问 SectionList 的数据

来自分类Dev

Redux形式的handleSubmit:如何访问存储状态?

来自分类Dev

如何通过 Flow 中的 HTTP 操作获取访问令牌

来自分类Dev

在Tabnavigator中访问Redux状态(反应导航)

来自分类Dev

无法访问组件中的 redux 状态

来自分类Dev

你如何通过 react-redux 访问 URL 来确定用户在你的应用程序中的进度?

来自分类Dev

如何通过Webdriver自动测试在FireFox / Edge中填写Redux形式的输入

Related 相关文章

  1. 1

    通过Redux操作访问组件状态

  2. 2

    React / TypeScript / Redux / Thunk操作未调度,状态未更新

  3. 3

    在完成useEffect中的提取之前,在卸载组件时如何使用redux thunk清理redux状态?

  4. 4

    如何通过参数调用redux动作并从reducer进行访问?

  5. 5

    Javascript Redux-如何通过ID从存储中获取元素

  6. 6

    如何通过钩子在React Redux中取消Axios请求?

  7. 7

    我如何通过玩笑在 redux 的 mapDispatchToProps 中测试箭头函数

  8. 8

    如何通过传递有效负载的组件在Redux中设置状态?

  9. 9

    Redux:通过创建浅表副本来改变状态如何在reducer中引起问题?

  10. 10

    如何通过redux将状态传递给Flutter中的BottomNavigationBar页面?

  11. 11

    如何响应Redux中的状态更改并调度其他操作?

  12. 12

    如何响应Redux中的状态更改并调度其他操作?

  13. 13

    如何使用thunk和useDispatch(react-redux挂钩)从操作中返回承诺?

  14. 14

    IO操作中的通过状态

  15. 15

    IO操作中的通过状态

  16. 16

    Redux Thunk 如何实现

  17. 17

    如何在没有Redux形式的情况下通过缩减器和操作更新输入值状态

  18. 18

    通过NavigatorIOS传递Redux状态

  19. 19

    如何使用 Jest Mock 模块测试 Redux Thunk 异步操作

  20. 20

    如何通过ComponentDidMount()中调用的函数访问状态集

  21. 21

    如何从 Vuex 操作访问 Vuex 状态属性?

  22. 22

    Redux Thunk和异步操作

  23. 23

    通过 Redux 访问 SectionList 的数据

  24. 24

    Redux形式的handleSubmit:如何访问存储状态?

  25. 25

    如何通过 Flow 中的 HTTP 操作获取访问令牌

  26. 26

    在Tabnavigator中访问Redux状态(反应导航)

  27. 27

    无法访问组件中的 redux 状态

  28. 28

    你如何通过 react-redux 访问 URL 来确定用户在你的应用程序中的进度?

  29. 29

    如何通过Webdriver自动测试在FireFox / Edge中填写Redux形式的输入

热门标签

归档