我正在学习使用Udemy课程的react-redux。符合此代码,
export function createPost(value, callback){
const request = axios.post(url, value).then(() => callback());
}
为什么不把这样的回调放到
const request = axios.post(url, value).then(callback);
编辑
在视频中他们称之为此功能
this.props.createPost(value, () => this.props.history.push('/'));
2
因为他们被this.props.createPost(value, () => this.props.history.push('/'));
我认为回调已经是一个功能 () => this.props.history.push('/')
;
那么为什么他们在createPost
Promise.then(() => callback())
定义中再次回调回调
在我看来,只需将Promise.then(callback)
之类的回调放好。
我错了吗?
答案 0 :(得分:1)
如果你仔细看看你的函数调用需要一个参数,这意味着如果你在末尾添加括号,它将被立即调用:
this.props.history.push('/')
如果您尝试这样做:
this.props.createPost(value, this.props.history.push('/')); // without the () =>
函数history.push
将立即被调用,你正在做的是上下文绑定,通过创建一个lambda函数来延迟执行并添加一个常量参数'/'
。
实现这一目标的另一种方法:
this.props.createPost(value, this.props.history.push.bind(null, '/')
阅读Bind
如果你的功能没有采取任何参数,那么你可以按照你的意愿去做(没有括号c)
this.props.createPost(value, this.props.anotherFunction) // anotherFunction does not take any params, and does can be passed as is