Javascript 在ajax调用后更改文档标题
我希望能够在React应用程序的每个页面上设置文档标题。虽然我意识到我可以使用Javascript 在ajax调用后更改文档标题,javascript,reactjs,redux,Javascript,Reactjs,Redux,我希望能够在React应用程序的每个页面上设置文档标题。虽然我意识到我可以使用document.title,但我不知道如何设置标题,因为它取决于通过异步调用获取的数据。我正在使用Redux进行服务器抓取 在我的组件类中,我有: componentDidMount() { this.props.dispatch(fetchJob(this.props.match.params.slug)) } 但我不确定调用完成后如何设置标题?您可以在调用完成后使用回调设置文档标题,就像任何javascri
document.title
,但我不知道如何设置标题,因为它取决于通过异步调用获取的数据。我正在使用Redux进行服务器抓取
在我的组件类中,我有:
componentDidMount() {
this.props.dispatch(fetchJob(this.props.match.params.slug))
}
但我不确定调用完成后如何设置标题?您可以在调用完成后使用回调设置文档标题,就像任何javascript承诺一样。有关更多信息,请查看承诺的方法:
then()。它最多包含两个参数:用于承诺成功和失败案例的回调函数
所以你的代码应该是:
componentDidMount() {
this.props.dispatch(fetchJob(this.props.match.params.slug)).then(() => {
document.title = "Your title";
})
}
我强烈建议使用一个(您可以创建自己的一个)来管理诸如动画、日志、分析等内容
这样就不会弄脏应用程序的逻辑
如果希望它成为应用程序的一部分,请在组件内部实现这样的逻辑,componentWillReceiveProps
或componentdiddupdate
(我建议使用第一个),然后更新slug。当然,您应该在代码的这一部分设置一个保护,条件是何时更新您的标题,所以我需要调整我的fetchJob功能吗?是的,我有。获取无法读取未定义的
@tommyd456的属性“then”,这意味着dispatch()
返回未定义的。您确定您发布的原始代码有效吗?谢谢,但决定使用https://github.com/gaearon/react-document-title
。似乎完成了任务。dispatch
默认情况下不返回承诺。您必须添加中间软件,如redux-thunk
或redux-promise
。