首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在history.push中传递对象-路由器v5?

如何在history.push中传递对象-路由器v5?
EN

Stack Overflow用户
提问于 2019-12-24 08:46:35
回答 1查看 7.3K关注 0票数 2

如何在/开始-声音上播放声音,在/停止-声音上停止声音?

/启动音

代码语言:javascript
复制
const history = useHistory();

const startSound = () => {
  const sound = new Audio("test.mp3");
  sound.play();
  history.push("/stop-sound", [sound]);
}

/停止音

代码语言:javascript
复制
const stopSound = () => {
  sound.pause();
  sound.currentTime = 0;
}

此代码将在浏览器中显示一个错误。

DataCloneError:未能在“历史记录”上执行“pushState”:无法克隆对象。

代码语言:javascript
复制
history.push("/stop-sound", [sound]);

这种样式将遵循React路由器文档。

React路由器历史

我不知道如何使用声音对象和/停止声音。

另一个例子

演示

/pass-文本

代码语言:javascript
复制
const PassTextPage = () => {
  const history = useHistory();

  const passText= () => {
    history.push({
      pathname: "/view-text",
      state: { name: "Hello" }
    });
  };

  return <button onClick={passText}>pass</button>;
};

/视图-文本

代码语言:javascript
复制
const ViewTextPage = () => {
  const text = props.location.state.name; // 'props' is not defined.

  const viewText = () => {
    console.log(text);
  };

  return <button onClick={viewText}>view</button>;
};

App.jsx

代码语言:javascript
复制
const App = () => (
  <BrowserRouter>
    <Route exact path="/">
      <Home />
    </Route>
    <Route exact path="/pass-text">
      <PassTextPage />
    </Route>
    <Route exact path="/view-text">
      <ViewTextPage />
    </Route>
  </BrowserRouter>
);
EN

回答 1

Stack Overflow用户

发布于 2019-12-24 08:51:17

将属性传递给导航组件的方式

代码语言:javascript
复制
history.push({
pathname: '/stop-sound',
  state: { name: 'Hello'}
});

在导航组件中这样访问。

如果其无状态组件

代码语言:javascript
复制
let location = useLocation();

location.state.name

if类组件

代码语言:javascript
复制
 this.props.location.state.name
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59466150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档