ฉันกำลังพยายามดึงข้อมูลบางส่วนในส่วนประกอบการตอบสนองโดยใช้ useEffect
hook หลังจากการเรนเดอร์ครั้งแรก fetchItems()
จะได้รับไอเท็มและอัพเดตร้านค้า อย่างไรก็ตาม items
ยังคงเป็นออบเจ็กต์ว่างเปล่าแม้ว่าร้านค้าจะอัปเดตแล้วก็ตาม
ฉันอาจจะใช้ useEffects
ผิด คุณใช้ Redux กับ useEffects
อย่างไร ฉันต้องการตั้งค่าสถานะการโหลดสำหรับส่วนประกอบ แต่เนื่องจากส่วนประกอบจะส่งเฉพาะการดำเนินการเพื่อดึงรายการ (แทนที่จะเรียก API โดยตรง) จึงไม่ทราบว่าเมื่อใดที่ข้อมูลถูกดึงออกมาและร้านค้าได้รับการอัปเดตเพื่อให้สามารถดึงได้ .
ใครช่วยกรุณาช่วยหาวิธีตรวจสอบให้แน่ใจว่าวัตถุ items
ได้รับการอัปเดตหลังจากการดึงข้อมูล Saga และการอัปเดตร้านค้าในภายหลัง
import React, { useState, useEffect } from "react";
import { connect } from 'react-redux';
import { useParams } from "react-router-dom";
const ItemComponent = ({ item, fetchItem }) => {
const { itemId } = useParams();
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
setIsLoading(true)
fetchItem(itemId)
setIsLoading(false)
}, []);
console.log(item) // gives empty object even after the fetch and store update
}
const mapStateToProps = (state) => {
return {
item: state.item
}
}
const mapDispatchToProps = (dispatch) => {
return {
fetchItem: (itemId) => { dispatch(fetchItemActionCreator(itemId)) }
}
}
export default connect(mapStateToProps, mapDispatchToProps)(ItemComponent);
fetchItemActionCreator
คือผู้สร้างการกระทำที่สร้างการกระทำที่จะจัดส่ง- ตัวลดและเทพนิยายของฉันทำงานได้ดีเพราะฉันเห็นการดำเนินการของร้านค้าและการอัปเดตในคอนโซล
- ถ้าฉันส่งวัตถุ
items
ไปยังอาร์เรย์การขึ้นต่อกันสำหรับuseEffect
จะมีการวนซ้ำไม่สิ้นสุดและเพจจะแสดงผลซ้ำต่อไป
ลด:
const itemReducer = (state={}, { type, payload }) => {
switch(type) {
case ITEM_GET_SUCCESS:
return {...state, ...payload}
default: return state
}
}
fetchItemActionCreator:
import { createAction } from '@reduxjs/toolkit';
export const fetchItemActionCreator = createAction(ITEM_GET_PENDING);
ขอบคุณล่วงหน้า!
item reducer
และ และfetchItemActionCreator
ของคุณได้ไหม - person Hend El-Sahli   schedule 12.11.2020const ItemComponent = ({ item , fetchItem}) => {
นั่นเป็นเรื่องบังเอิญใช่ไหม? - person Hend El-Sahli   schedule 12.11.2020fetchItem
ไม่ได้ถูกเพิ่มที่นี่ในคำถามโดยไม่ได้ตั้งใจ - person Bovojon A   schedule 13.11.2020