Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ajax调用后更改文档标题_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 在ajax调用后更改文档标题

Javascript 在ajax调用后更改文档标题,javascript,reactjs,redux,Javascript,Reactjs,Redux,我希望能够在React应用程序的每个页面上设置文档标题。虽然我意识到我可以使用document.title,但我不知道如何设置标题,因为它取决于通过异步调用获取的数据。我正在使用Redux进行服务器抓取 在我的组件类中,我有: componentDidMount() { this.props.dispatch(fetchJob(this.props.match.params.slug)) } 但我不确定调用完成后如何设置标题?您可以在调用完成后使用回调设置文档标题,就像任何javascri

我希望能够在React应用程序的每个页面上设置文档标题。虽然我意识到我可以使用
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