React-Redux добавляет класс для элемента на основе сравнения двух значений - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу добавить класс в строку таблицы на основе предыдущего значения и текущего значения. Если текущее значение больше предыдущего, мне нужно добавить crypt-up и меньше crypt-down className.Но есть ли простой способ сравнить текущее значение состояния и предыдущее значение состояния. Как редукторы изменяют хранилище, так как я могу их сравнить?

const marketcap = this.props.marketcap.map((coin, i) => (
        <tr key={coin.CoinInfo.Id}>
            <th>{i+1}</th>
            <td className="text-left font-weight-bold"><img src={url+coin.CoinInfo.ImageUrl} className="pr-1 crypt-market-cap-logo" width="20"/>{coin.CoinInfo.FullName}</td>
            <td className="crypt-up"><b>{coin.DISPLAY.USD.MKTCAP}</b></td>
            <td>{coin.DISPLAY.USD.PRICE}</td>
            <td>{coin.DISPLAY.USD.TOTALVOLUME24HTO}</td>
            <td>{coin.DISPLAY.USD.CHANGEPCT24HOUR}%</td>
            <td className="pt-3"><img src={charturl + coin.CoinInfo.Name + charturllast} alt=""/></td>
        </tr>
));

1 Ответ

0 голосов
/ 21 февраля 2019

ComponentDidUpdate поможет вам, этот метод принимает prevProps и prevState в качестве параметров, так что вы можете сравнивать prev props с новым, как этот:

state = {
  className: 'crypt-up',
}

componentDidUpdate(prevProps) {
  const className = prevProps.value > this.props.value ? 'crypt-up' : 'crypt-down';

  this.setState({ className });
}
...