나는 redux를 통해 API 호출을하여 데이터를 가져 와서 상태를 업데이트하기 위해 componentWillMount를 사용하는 구성 요소를 가지고 있습니다.반응 | Redux | Thunk - 구성 요소 내에서 데이터를로드하는 방법?
이 메서드를 호출하기 전에 DB로 이동하여 첫 번째 단락의 데이터 검색이 수행되어야 하는지를 결정할 속성을 가져와야합니다.
내가 (약속을 사용)하고 생각하고 있었는데 -
- 데이터가 필요한 경우
- 후, 정상 흐름 (제 1) 파견 (제 2 항)에서 속성을 가져옵니다.
- 데이터가 필요하지 않으면 계속 수행하십시오.
나의 질문은 어디 론가해야합니까?
한편으로는 가게를 통해 지나치게 과장된 느낌이 들었습니다. 다른 한편으로는, 부작용 문제가 발생할 수 있습니다. 또한 구성 요소 또는 작업 작성자에서 논리를 구현할 수 있습니다. 당신이 생각하는 가장 좋은 점은 무엇입니까?
추가 정보 : 1. 나는 redux-thunk를 사용하고 있습니다. 무용담으로 변하는 것은 의문의 여지가 없습니다. 2. 내가 조사하는 속성은 1 감속기에 있지만 반입해야하는 데이터는 다른 감속기에 있습니다 (일부 솔루션에서는 문제가 될 수 있음).
옵션 1 :
import {getData} from '....../dataActions';
import {getToken} from '......../userActions';
const MegaComponent extends React.Component {
componentWillMount() {
getToken(uid)
.then(shouldUpdate => {
if (shouldUpdate) {
getData(uid);
} else {
console.log('no need to get data');
}
})
}
}
funciton mapStateToProps(state, ownProps) {
return {
user: state.user
}
}
function mapDispatchToProps(dispatch) {
return {
getToken: (uid) => dispatch(getToken(uid)),
getData: (uid) => dispatch(getData(uid))
};
}
export default connect(mapStateToProps, mapDispatchToProps)(MegaComponent);
옵션 2 (내가 수행해야합니다 생각)
export function getToken(uid) {
return dispatch => {
return api.getToken(uid)
.then(token => {
if (token === 'what it should') {
return {type: 'NO_DATA_CHANGE_NEEDED', action: null};
} else {
// the action that handle getting data is in a different action creator.
// I either import it here and call it, or there's a better way.
}
})
}
}
UPDATE
이 미래 visiotrs을 위해 유용하게 사용할 수 있습니다 - getting state inside an action creator
재미있는 방법! 해결책 일 수 있습니다. 질문에 몇 가지 코드를 추가하려고합니다. – alexunder
안녕하세요, 일부 코드를 추가했습니다. 도움이 될 수 있다고 생각합니다. – alexunder
그래, 필요하다면 getData()를 전달하지만 구성 요소로 데이터를 다시 가져 오는 방법은 무엇입니까? 데이터가 상점에 보관됩니까? 그러나 당신은 그 상태를 소도구에 매핑하지 않습니다. 따라서 데이터를 변경하더라도 업데이트 된 데이터를 구성 요소로 어떻게 가져 옵니까? – larrydahooster