Redux를 사용하여 저장소를 관리하는 ReactJs 앱이 있습니다. 제 주정부는 복잡한 파일을 보관할 수있는 복잡한 json입니다. 내가 감속기를 시작할 때, 서버에서 컨텐트를 가져 오기 전에 액세스 할 때 다른 초기 상태를 지정해야합니다. 'undefined'오류가 발생합니다. 다음은 예입니다 초기 상태는 redux로 연결되지 않았습니다. 반응 앱
fetchContent()
나던이 시점에서 호출 할 것 때문에 처음 구성 요소의 처음 상태는, state.reducer1.a.b.c
이 정의가 발생 지금
//Test.jsx
class Test extends React.Component{
componentWillMount(){
fetchContent({
type: SET_CONTENT
});
}
render(){
return(
<div> {this.props.header} </div>
)
}
mapStateToProps(state){
return{
header: state.reducer1.a.b.c
}
}
}
export default (mapStateToProps)(Test);
//reducer1.js
export default function reducer1(state = {}, action = {}) {
switch (action.type) {
case SET_CONTENT:
return Object.assign({}, action.data);
default:
return state;
}
}
//reducer2.js
export default function reducer2(state = {}, action = {}) {
switch (action.type) {
case SET_SOMETHING_ELSE:
return Object.assign({}, action.data);
default:
return state;
}
}
//CombinedReducer.js
export default combinedReducers(Object.assign({}, {reducer1}, {reducer2}))
제 질문은 어떻게 해결합니까? 감속기의 초기 상태를 지정하는 것이 유일한 옵션입니까? 다음과 같은
//reducer1.js
export default function reducer1(state = { a: { b: { c: "somedata"}}}, action = {}) {
switch (action.type) {
case SET_CONTENT:
return Object.assign({}, action.data);
default:
return state;
}
}
그래서 유일하게 가능한 솔루션 중 하나는 내가했던 것처럼 상태를 lnitialize 또는 상태에서 데이터 액세스의 각 수준에 null 검사를 할 경우! 예, 기능이 바깥에 있어야했습니다.이 글을 빨리 작성 했으므로 제대로 살펴 보지 않았습니다. 그리고 예, fetchContent는 내부적으로 dispatch를 호출하는 액션 생성자의 함수입니다. – user3807940
null 체크를 할 무언가에 대한 귀하의 기대가 무엇인지 확신 할 수 없습니까? 당신은 정말로 단지 a) predata와 b) 데이터를 점검 할 두 가지 상태가 있습니다. 이것은 '모든 수준의 데이터 액세스'가 아니라 단지 하나의 null 체크입니다. – azium