點燈坊

失くすものさえない今が強くなるチャンスよ

使用 not() 實現 toggle

Sam Xiao's Avatar 2021-04-09

Toggle 為實務上常見的需求,Imperative 會使用 ! Operator,在 FP 可使用 not()

Version

Vue 3.0.5
Ramda 0.27.1

Imperative

not000

按下 toggle 會使 state 從 truefalse 切換。

<template>
  <button @click="onClick">toggle</button>
  {{ isShow }}
</template>

<script setup>
import { ref } from 'vue'

let isShow = ref(true)

let onClick = () => isShow.value = !isShow.value
</script>

11 行

let onClick = () => isShow.value = !isShow.value

Imperative 會使用 ! 切換。

not()

<template>
  <button @click="onClick">toggle</button>
  {{ isShow }}
</template>

<script setup>
import { ref } from 'vue'
import { pipe, not } from 'ramda'
import { read, write } from 'vue3-fp'

let isShow = ref(true)

let onClick = pipe(
  read(isShow),
  not,
  write(isShow)
)
</script>

13 行

let onClick = pipe(
  read(isShow),
  not,
  write(isShow)
)

! 在 FP 可使用 not() 取代。

Conclusion

  • FP 會盡量不用 operator 而改用 function 取代,其中 not() 正是對應 ! operator

Reference

Ramda, not()