Javascript Can';ajax调用后无法接收更新的道具(react)
获取向服务器发送数据的funcJavascript Can';ajax调用后无法接收更新的道具(react),javascript,ajax,reactjs,Javascript,Ajax,Reactjs,获取向服务器发送数据的func addRemark(id,e) { var remarktext = this.state.popUpText; this.props.addRemark(id,remarktext); // this func sends to serve this.props.closePopUp(); setTimeout(function() { this.props.IncomeListProfile(); }.bind
addRemark(id,e) {
var remarktext = this.state.popUpText;
this.props.addRemark(id,remarktext); // this func sends to serve
this.props.closePopUp();
setTimeout(function() { this.props.IncomeListProfile(); }.bind(this), 1000);
}
现在我正在等待用此代码更新我的列表setTimeout(函数(){this.props.IncomeListProfile();
但我现在想清楚,什么时候数据会被添加
export function SendedData(data) {
if (data) {
return {
type: SENDED_REMARK, data:true
}
}
}
在那里我收到了真实的请求。当请求好的时候
function mapStateToProps(state) {
var sended = state.getIn(['PopupReducer'])['sendedRemark'];
console.log(sended + 'true');
return {
sended: sended
};
}
但在发送请求后,我无法在我尝试执行的组件中获得真正的值
componentWillReceiveProps(nextProps) {
this.setState({ sendeder: nextProps.sended });
console.log('isshwon!!!! ' + this.state.sendeder); //get false every time
}
所以,我的想法是,当我按下“保存”按钮时,我将请求发送到服务器,得到带有TRUE的响应,然后我需要更新我的列表
我使用axios的请求
export function addRemark(id,remarktext) {
return dispatch => {
return (
console.log(id + remarktext),
axios.post(Api.getURI("addremark"),{body: {course_id:id, remark:remarktext}}, {
headers: { 'X-Authenticated-Userid': '15000500000@1' }
}).then(function (response) {
//console.log(response.data);
dispatch(SendedData(response.data));
})
.catch((error) => {
console.log(error);
})
)
}
}
你的减速机
[types.SENDED_DATA] : (state, action) =>
return { ...state,
data: Immutable.fromJS(action.d),ata
isLoading: false
}
您的组件
shouldComponentUpdate (nextProps) {
return nextProps.data !== this.props.data
}
componentDidUpdate (prevProps) {
if(prevProps.data !== this.props.data) {
//do smthing that you need, data was changed
this.props.IncomeListProfile();
}
}
或者干脆不做任何事情来重新加载基于
数据
呈现的组件,因为应该更新组件
返回真
-它将使用Redux和axios重新加载I.m发送请求,是否可以合并它?导出函数addRemark(id,remarktext){return dispatch=>{return return(console.log(id+remarktext),axios.post(Api.getURI(“addremark”),{body:{course_id:id,remarktext}},{headers:{'X-Authenticated-Userid':'15000500000@1然后(函数(response){//console.log(response.data);分派(sendedata(response.data));}).catch((error)=>{console.log(error);})}
Uncaught(承诺中)错误:操作必须是普通对象。使用自定义中间件进行异步操作。哦,是的,明白你的意思,那么为什么你不在通过reducer更改状态后更新组件DIDDUpdate上的列表?嗯……让我试试看,你可以从任何地方访问redux状态,更新答案