【发布时间】:2021-12-28 11:56:51
【问题描述】:
我想在我的 react 项目中使用 axios 从我的服务器调用产品。我用的是redux,当我用useeffect触发了组件里面的动作时,我的产品还没来,我的产品来了,没有使用useeffect。
在我的组件中:
async function get(){
await props.getProducts()
console.log(props.products)
}
useEffect(() => {
get()
}, []); when I write 'get or get()' in square brackets , products loop coming to console continuous
}
我的行动:
import axios from "axios"
const url="https://my-expressjs-ap.herokuapp.com/products"
export const getProducts=()=> (dispatch: (arg0: { type: any; payload: any }) => any)=>{
axios
.get(
`https://my-expressjs-ap.herokuapp.com/products`
)
.then((response) =>
dispatch({ type: "GET_PRODUCTS_SUCCESS", payload: response.data })
)
.catch((error) => dispatch({ type: "GET_PRODUCTS_ERROR", payload: error }));
// fetch(url).then(res=> res.json())
// .then(response=>dispatch(({type:"GET_PRODUCTS_SUCCESS",payload:response}))
// ).catch(error=>dispatch({type:"GET_PRODUCTS_ERROR", payload:error}))
}
我的减速机:
const INITIAL_STATE={
products:[],
message:''
}
export const reducer=(state=INITIAL_STATE,action: any)=>{
switch(action.type){
case'GET_PRODUCTS_SUCCESS': return {...state, products:action.payload};
case 'GET_PRODUCTS_ERROR': return{...state, message:action.payload}
default: return state;
}
}
【问题讨论】:
-
只需在
useEffect中使用props.getProducts并将您的依赖数组设置为[props.getProducts]。
标签: javascript reactjs typescript redux