如何在redux/toolkit中使用评级组件进行操作?

1tuwyuhd  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(138)

主要问题:我想发送日期到商店,但我只实现了一部分,因为rank发送的是null或undefined。

const [ranking, setRanking] = useState<number | null>(2);
      const RankHandler = (item, ranking) => {

        dispatch(
         rankAdd({
            id: item.id,
           rank: ranking
        })

        );
      };

<Rating
  name="simple-controlled"
  value={ranking}
  onClick={(event, newValue) => {
    setRanking(newValue);
    console.log("rating", ranking);
    RankHandler(props.id)
  }}
/>

我收到一个错误,我从受控状态更改为不受控状态,这是一个大问题等。

fcwjkofz

fcwjkofz1#

您有一些变量命名重复,并且在调用RankHandler时,不能保证状态已经更新。您可以做的是将新值传递给RankHandler本身。此外,我建议将参数名从ranking重命名为updatedRanking或类似的名称。
关于props.id,我有一点困惑,你把它传递给RankHandler,在RankHandler里你又得到了它的id。所以它应该是props.id.id。请确保它是正确的值。因为你只添加了这部分代码,我不能对此发表评论。
而对于console.log("rating", ranking),它不会显示更新的状态,因为到console.log()打印时,状态尚未更新。
希望你收到了,有什么问题尽管告诉我。

const [ranking, setRanking] = useState<number | null>(2);
const RankHandler = (item, updatedRanking) => {
  dispatch(
    rankAdd({
      id: item.id,
      rank: updatedRanking
    })

  );
};

<Rating
  name="simple-controlled"
  value={ranking}
  onClick={(event, newValue) => {
    setRanking(newValue);
    console.log("rating", ranking);
    RankHandler(props.id, newValue)
  }}
/>

相关问题