react-router的history.push方法state丢失

1,656 阅读1分钟

实现页面间跳转同事传递search和state参数,但是发现同样的方法调用,只是search参数值不同,结果有时state有值,有时state是undefined.

发现问题

   props.history.push({        
    pathname: "/channel/param/"+appId,        
    search: `?channelName=${searchData.channelName}`,        
    state: {...hisData},   
  });

对于不同的search参数,有些可以在下级页面获取到state参数,有些获取不到。经对比分析发现,当channeName含有中文时,会出选state参数丢失的情况。

解决问题

将中文进行转义

   props.history.push({        
       pathname: "/channel/param/"+appId,        
       search: `?channelName=${encodeURIComponent(searchData.channelName)}`,        
       state: {...hisData},   
    });

原因:

.....还没找到原因