Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Reactjs 何时以及如何使用Apollo客户端和React路由器重定向_Reactjs_React Router_Apollo - Fatal编程技术网

Reactjs 何时以及如何使用Apollo客户端和React路由器重定向

Reactjs 何时以及如何使用Apollo客户端和React路由器重定向,reactjs,react-router,apollo,Reactjs,React Router,Apollo,lI使用Apollo创建了React组件,我目前使用render函数在加载数据后执行重定向,但我收到警告:警告:无法在现有状态转换期间更新(例如在render中)。渲染方法应该是道具和状态的纯函数。 这是我的密码: 重定向部分: render() { return ( <Query query={Q} variables={{ cursor: this.props.match.params.id }}> {({ loading, error, dat

lI使用Apollo创建了React组件,我目前使用render函数在加载数据后执行重定向,但我收到警告:
警告:无法在现有状态转换期间更新(例如在
render
中)。渲染方法应该是道具和状态的纯函数。

这是我的密码:

重定向部分:

render() {
    return (
      <Query query={Q} variables={{ cursor: this.props.match.params.id }}>
      {({ loading, error, data, fetchMore }) => {
        if (loading) return <p>Loading...</p>;
        if (error) return <p>Error :(</p>;
        if (!this.props.match.params.id) {
          this.props.history.push(
            "/post/" + data.allPosts.pageInfo.endCursor
          );
        }
        return (
          <div></div>
        )
render(){
返回(
{({加载,错误,数据,fetchMore})=>{
如果(加载)返回加载…

; if(error)返回错误:(

; 如果(!this.props.match.params.id){ 这个。道具。历史。推( “/post/”+data.allPosts.pageInfo.endCursor ); } 返回( )

如何在惯用的React代码中做到这一点并避免任何警告?

看起来您正在使用React路由器v4,尽管我不太确定。如React路由器中所示

历史是可变的

这就是为什么调用<代码>这个.Prist.Sist.Puthor()/代码>引起上述错误的原因。

if (!this.props.match.params.id) {
   return <Redirect to={"/post/" + data.allPosts.pageInfo.endCursor}
}
if(!this.props.match.params.id){

返回感谢您的回答。当我尝试此操作时,我得到以下错误:“第65行:预期有赋值或函数调用,但看到的却是表达式没有未使用的表达式”在上,我创建了一个包含条件的函数,并从render functions return语句中调用了它,这很有效,谢谢。很抱歉。我在上面编辑了我的答案,因为您实际上需要返回组件。很高兴您找到了它