Reactjs 何时以及如何使用Apollo客户端和React路由器重定向
lI使用Apollo创建了React组件,我目前使用render函数在加载数据后执行重定向,但我收到警告: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
警告:无法在现有状态转换期间更新(例如在
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语句中调用了它,这很有效,谢谢。很抱歉。我在上面编辑了我的答案,因为您实际上需要返回组件。很高兴您找到了它