如果尚未设置状态变量,如何仅在 Store 中设置它?

How do I only set a state variable in a Store if it has not already been set?

我正在使用 Hyperstack 商店,并且在我的组件的 before_mount 中我想做的是:

before_mount do
  BridgeStore.show_card_sample ||= true
end

在店里:

class BridgeStore < HyperStore
  class << self
    state_accessor :show_card_sample
  end
end

但是每次呈现这种类型的组件时都会触发条件赋值 ||=

我知道我可以通过在商店 state_accessor :is_set 中设置一个状态变量来解决这个问题,并且只在尚未设置的情况下设置其他变量,但我想知道是否有更好的方法来解决这个问题?

您应该将围绕初始化的逻辑移到您的商店中。请记住,在 Ruby 中,您的 class 实例变量可以初始化为 class 定义:

class BridgeStore < HyperStore
  @show_card_sample = true
  class << self
    state_accessor :show_card_sample
  end
end