当前位置: 首页 > 知识库问答 >
问题:

道具对于父级(react.js)中随机生成的道具具有不同的值

苗康平
2023-03-14

在反应中的怪异行为。js。当我在道具中传递一些随机生成的值时。它在控制台日志中提供不同的输出。

当我调试时,它会再次返回到应用程序。js(Parent)并检查其值,但控制台只有2个,而不是4个。

我在反应生命周期中错过了什么?

// App.js
function App() {
  const rand = Math.random();
  console.log(rand);
  return (
    <div className="App">
      <Board rand={rand} />
    </div>
  );
}

export default App;
// Board.js
function Board({ rand }){
    console.log(rand);
    return(
        <div className="Board"></div>
    );
}
export default Board;

以下是github回购协议:git@github.com:senseihimanshu/扫雷舰。吉特

请检查App.js和Board.js以进一步澄清,并在开发工具的控制台中验证这两个数组不相同...这就是问题所在。

共有1个答案

景唯
2023-03-14

做出反应。StrictMode渲染2次以检测开发模式中的副作用

React 17在第二次渲染期间吞下一些console.logs,这只发生在启用严格模式时https://github.com/facebook/react/issues/20090#issuecomment-715926549

代码参考:https://github.com/facebook/react/blob/7cb9fd7ef822436aef13c8cbf648af1e21a5309a/packages/react-reconciler/src/ReactFiberClassComponent.old.js#L170

如何解决https://github.com/facebook/react/issues/20090#issuecomment-715927125

不过,视图将保持一致,最好使用useEffect并在渲染时计算一次值。

 类似资料:
  • 我真的不明白{…道具}能做什么?我知道你可以通过这种方式更容易地“卸载”所有道具,但是如果我们还没有任何道具呢?例如,考虑这个代码 道具在这种情况下是做什么的,因为我们这里没有任何组件,这是一个新的组件,这是否意味着当我重用这个组件时,我可以给它任何我想要的道具?

  • 在功能组件中,我想访问从父功能组件继承的道具。为了了解我的意思,我有以下片段: 我想将App()函数中的参数传递给MainApp(),这样我就不必访问。我怎样才能正确地做到这一点?导致像这样的道具通过

  • 在本页React Native State on React Native docs中,我们有以下语句: 道具由父级设置,并且在组件的整个生存期内都是固定的。 但是,在本页React文档上的React State and Lifecycle中,我们有以下声明: 因为this.props和this.state可能是异步更新的,所以不应该依赖它们的值来计算下一个状态。 我的误解在哪里?对我来说,当组件

  • 也许有一种方法可以将组件绑定到事件? 在使用React一年多后,在Sebastien Lorber的回答的激励下,我得出结论,将子组件作为参数传递给父母中的函数实际上不是React的方式,也不是一个好主意。我换了答案。

  • 该父级接收“props.id”并将数据值传递给由getAttributes()返回的子级。 在child上,我可以在控制台和componentWillReceiveProps中看到props值,但数组没有呈现。我尝试使用react-devtool。在react-devtool中,道具似乎传递给了孩子,但不是渲染。有趣的是,在react-devtool中,当我改变数组的一些元素时,数组正在呈现。 我

  • 我有一个组件,根据其大小接收道具。道具可以是字符串或数字,例如:或。 我能让知道这可以是PropTypes验证中的一个或另一个吗? 如果未指定类型,则会收到警告: prop type无效;它必须是一个函数,通常来自React。道具类型。