当前位置 : 主页 > 网页制作 > React >

reactjs – React条件样式无法正确呈现

来源:互联网 收集:自由互联 发布时间:2021-06-15
好吧,所以我有一个非常有趣的问题,有条件地使用className渲染一个样式,它适用于一个表但不适用于另一个表. 我正在使用反应版本15.6.2 我映射数据并返回第一个表格行或第二个表格,如果
好吧,所以我有一个非常有趣的问题,有条件地使用className渲染一个样式,它适用于一个表但不适用于另一个表.

我正在使用反应版本15.6.2

我映射数据并返回第一个表格行或第二个表格,如果它是买或否.

if (isBuy) {
      return (
        <tr key={i} className={( newOrder ? 'updatedOrderTr' : '' )} onClick={() => this.props.populateOrderForm(amount, price, isBuy)}>
          <td>{order[1].user_depth}</td>
          <td>{numberWithDelimiter((price * amount).toFixed(prec))}</td>
          <td>{amount}</td>
          <td>{price.toFixed(prec)}</td>
        </tr>
      );
    } else {
      return (
        <tr key={i} className={( newOrder ? 'updatedOrderTr' : '' )} onClick={() => this.props.populateOrderForm(amount, price, isBuy)}>
          <td>{price.toFixed(prec)}</td>
          <td>{amount}</td>
          <td>{numberWithDelimiter((price * amount).toFixed(prec))}</td>
          <td>{order[1].user_depth}</td>
        </tr>
      );
    }

我渲染了这个组件的两个实例,它传递了一个像这样结构化的数组

[ [1, {volume: 1, price: 3}], [2, {volume: 4, price: 2}] ]

唯一的区别是一个表是卖单表,一个是买单表,其中表格单元格被反转.

买入订单行变得很好,并且样式应该正确显示(当newOrder为真时).

卖单表行只能随机工作.这是一个视频.

https://giphy.com/gifs/3o7aCPUNIy9oA46Y8g/fullscreen

请注意我是如何发送垃圾邮件以获得实际闪存的右侧.实际上代码是完全相同的,只有td的反转…

我很困惑,花了很多时间玩它.

我尝试使得应用样式的类只是一个纯实的背景而不是动画.

这是我检查的条件.其中检查订单数组当前索引与该数组的先前状态.

const newOrder = JSON.stringify(this.props.data[i]) !== JSON.stringify(this.state.previousTable[i]);

非常感谢任何帮助!

我通过检查nextProps与currentProps相比解决了这个问题,如果它们发生了变化,我会设置导致重新渲染的状态.

右表(卖单)没有更新的原因是因为有买入数据和卖出数据来自套接字.几乎每次都会出现卖单(这就是它定期工作的原因).

因为我没有检查道具是否发生了变化,所以状态被多次设定,我无法看到这种风格.

componentWillReceiveProps(props) {
  if (this.props.data !== props.data) {
    this.setState({previousTable: this.props.data});
  }
}
网友评论