스택 오버플로에서 관련된 모든 질문을 시도했지만 여전히이 문제에 대한 해결책을 찾지 못했습니다.Redux가 구성 요소의 소품을 업데이트하지 않습니다.
나는 me
라는 감속기을 가지고 있고 나는 folders
라고 내가 구성 요소가 업데이트되지 않는 me
감속기를 업데이트 할 때마다, 객체의 배열을 업데이트하기 위해 노력하고있어. 여기
내가 내 구성 요소에 감속기를 통해 업데이트하는 방법은 다음과 같습니다
class ComponentA extends Component {
...
updateUploadedFiles(file) {
console.log(this.props.store);
const newFolders = this.props.me.folders.map(
folder =>
folder._id === file.parent._id
? {
...folder,
files: [...folder.files, file.file]
}
: folder
);
this.props.updateMe({
...this.props.me,
folders: newFolders
});
}
...
}
function mapStateToProps(state) {
return {
me: state.me,
path: state.path,
filesToUpload: state.uploads
};
}
function mapDispatchToProps(dispatch) {
return bindActionCreators(
{
updatePath,
updateMe,
updateUploads
},
dispatch
);
}
export default connect(mapStateToProps, mapDispatchToProps, null, {
pure: false
})(Upload);
이 내 updateMe
행동의 코드입니다 :
export const updateMe = state => ({
type: "UPDATED_ME",
payload: state
});
그리고 이것은 me
감속기의 코드입니다 :
export default function(state = "NOT_AUTHENTICATED", action) {
switch (action.type) {
case "UPDATED_ME":
return action.payload;
default:
return state;
}
}
또한 여기 제가 이경 소켓을 결합하는 방법입니다 :
import me from "./me";
...
import { combineReducers } from "redux";
const reducers = combineReducers({
me,
...
});
export default reducers;
감속기는 작업이 트리거 될 때 응용 프로그램 상태를 업데이트하는 기능입니다. 귀하의 코드에서 나는 this.props가 사용되는 것을 보았습니다. 그래서 귀하의 코드는 감속기가 아닌 구성 요소에 있다고 생각합니다. 구성 요소에서 상태를 업데이트하려고합니까? 코드에 대한 좀 더 많은 정보를 제공해 주시면 감사하겠습니다. – DiegoTArg
@DiegoTArg 예, 위 코드는 구성 요소의 코드입니다. (ComponentA'라고 부르겠습니다.)이 컴포넌트는 감속기'me'를 업데이트하고'ComponentA'의 소품을 업데이트해야합니다. –