【问题标题】:How to compare Prop changes in Svelte 3如何比较 Svelte 3 中的道具变化
【发布时间】:2020-03-07 14:32:12
【问题描述】:

Svelte 3 中是否有一种机制可以在渲染之前比较组件内的 prop 更改?类似于 React getDerivedStateFromProps

<script>
 export let color;

  // Does anything like this exist in Svelte?

  beforeUpdate((changes) => {
     const same = changes.prev.color === changes.next.color
  })
</script>

【问题讨论】:

    标签: svelte svelte-3


    【解决方案1】:

    如果你只想在color改变时执行一段代码,你可以使用响应式声明:

    <script>
      export let color;
    
      $: {
         console.log('color changed', color);
         // will only get called when the `color` changed.
      }
    </script>
    

    但是如果你想用当前值和前一个值来执行那段代码,你可以这样做:

    <script>
      export let color;
      let prevColor;
    
      $: {
         console.log('currentColor:', color, 'prevColor:', prevColor);
         prevColor = color;
      }
    </script>
    

    【讨论】:

    【解决方案2】:

    我实际上已经编写了一个包,它使用 Svelte Stores 为您提供了一个简单的界面,可以根据需要引用尽可能多的先前值。

    Svelte Previous.

    <script>
      export let color;
      const [currentColor, previousColor] = usePrevious(color);
      $: $currentColor = color;
    </script>
    
    {$previousColor} to {$currentColor}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 2020-03-26
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      相关资源
      最近更新 更多