React 구성 요소에 대한 초기 데이터를 얻기 위해 디스패치를 호출하는 가장 좋은 방법은 무엇입니까? 내 이해는 ComponentWillMount 렌더링 전에 호출됩니다. 따라서 이론적으로 ComponentWillMount에서 dispatch를 호출하면 렌더링 할 때까지 ComponentDidMount를 사용하여 구성 요소의 소품에 데이터가 있어야합니다. 나는 그것을 보지 않고있다.React Redux Dispatch
렌더링이 두 번 호출되는 것을보고 있는데, 구성 요소가 초기화 될 때 렌더링이 두 번 호출되며, 소품의 데이터에 액세스 할 수 없습니다. 디스패치는 실제로 두 번째 렌더링까지 호출되지 않습니다. 기본적으로 초기에 구성 요소를 설정할 때 디스패치를 호출하는 가장 좋은 방법을 밝혀주는 것이 중요합니다. 필자는 컨테이너 구성 요소를 사용하여 디스패치에서 데이터를 가져온 다음 하위 구성 요소에 소품으로 전달하기 위해 다음과 같은 작업을 수행하려고합니다. 그러나 ContainerComponent에서 일부 상태 변수를 초기화 한 다음 ChildComponent에 전달합니다. 문제는 초기화 할 상태 변수가 dispatch에서 반환 된 데이터에 따라 다르다는 것이고 이상적으로는 ComponentWillMount 또는 ComponentDidMount에서 초기화를 수행하는 것이 좋습니다. 얻기
What is the best way to call a dispatch to get initial data on a React component?
: 나는 당신의 주요 질문은 생각
import axios from 'axios';
export const GET_TRANSACTIONS = 'GET_TRANSACTIONS';
export function getTransactions(year) {
return function(dispatch) {
axios.get(`http://localhost:3001/api/transfilter?year=${year}&grouping=2`)
.then(response => {
dispatch({
type: GET_TRANSACTIONS,
payload: response.data,
selectedYear: year
});
})
.catch((error) => {
console.log(error);
})
}
}
export const GET_TRANSACTIONS_ALL = 'GET_TRANSACTIONS_ALL';
export function getTransactionsAll(year) {
return function(dispatch) {
axios.get(`http://localhost:3001/api/trans?limit=20`)
.then(response => {
dispatch({
type: GET_TRANSACTIONS_ALL,
payload: response.data
});
})
.catch((error) => {
console.log(error);
})
}
}
우리는 componentDidMount에서 가져 오기 API 데이터 메소드를 호출하고 있습니다. HTML 템플릿에서 컴포넌트를 어떻게 사용하고 있습니까? –
가져 오기가 작동합니다. 모든 것이 작동합니다. 단지 그것을 수행하고 파견 "라이프 사이클"을 더 잘 이해할 수있는 가장 좋은 방법을 알고 싶습니다. 렌더링이 두 번 호출되고 두 번째 렌더링이 호출 될 때까지 데이터를 사용할 수 없기 때문에 가져 오기가 실제로 호출되기 때문에 렌더링이 즉시 실행되지 않는 것 같습니다. –
어디서'searchProps'를 전달하고 있습니까? 이 컨테이너 부모 컴포넌트와'get_data' 함수를 보여 주어야합니다. – azium