reactjs - React - 组件在重新渲染后不更新

重新渲染后,我的一个组件没有得到更新。它只是偶尔发生。

我检查了组件是否正确呈现。在下面的代码中,您将在 render 函数中看到一个 console.log。我意识到值(value)改变正确。但是组件本身不会在视觉上更新。我认为我不会改变任何状态/ Prop 。我用 Redux对于大多数状态管理。你知道为什么会这样吗?谢谢。

子组件如下所示:

export default ChildComponent extends React.Component {
   ...

   render() {
      ...
      const barWidth = this.getProgressWidth(boundingClientRect) // also uses this.props.editorTimestamp
      console.log(barWidth) // This value is updated like I expect

      return (
         <div>
            ...
            <div style={{...styles.barStyles, width: barWidth }}>
            ...
         </div>
      )
   }
}

父组件如下所示:

export default ParentComponent extends React.Component {
   ...

   render() {
      ...
      const singleEditorTimestamp = this.getEditorTimestamp(id) // gets the timestamp from timestamps obj

      return (
         <div>
            ...
            <ChildComponent editorTimestamp={singleEditorTimestamp} />
            ...
         </div>
      )
   }
}

最佳答案

stateprops 更改可以触发渲染。还有 this.forceUpdate();

你可以这样做

 const barWidth = this.getProgressWidth(boundingClientRect)
 this.setState({barWidth: barWidth});

但是在 render 中改变状态并不是一个好主意。因为它会触发无限渲染过程。您应该声明一个 event 并在该事件中更改 state。 :)

https://stackoverflow.com/questions/58032899/

相关文章:

reactjs - react native : Module RCTLog is not a re

python - TensorFlow 无法将字符串类型的 Tensor 复制到设备

firebase - 是否可以为不活动实现自动注销功能?

postgresql - 如何为 linux、Fedora 安装 psycopg2

c# - Automapper:对所有其他成员使用默认映射

node.js - 将参数/通配符定义为 npm 脚本键/名称的一部分

android-management-api - Google Pixel 设备在发出重启命令后重启

c# - 如何在 ConfigureServices 方法中使用 ASP.NET Core 2.1

database - 使用扇出写入方法根据隐私设置(PostgreSQL、Redis)更新 Feed

c# - OmniSharp MSBuild ProjectManager 无法更新我的 .cspr