我正在编写一小部分 Vue 组件来创建一个在未来项目中使用的库,但我对这个主题很困惑;也许我需要一种完全不同的方法,但我不知道......
我从(我认为这就是所谓的)策略模式中获得灵感:您创建一个模板组件,其行为取决于您作为参数传递的嵌套组件。例如,我创建了一个 Preview 组件,它拥有一个更改 bkg 图像的方法,并且我想在该组件中嵌套一个能够调用此方法的叠加层。由于这个覆盖层可以是我认为如果它嵌套在一个插槽中会很好的一切:
<template>
<div class="preview" :class="{active: active}">
<div class="content">
<slot name="content"></slot>
</div>
<div class="overlay"><slot></slot></div>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
(我将通过 img 列表使内容成为 v-for)
和js:
props: {
content: {default: function () { return [] }}
},
data: function () {
return {
preview: null
}
},
methods: {
setPreview: function (e) {
this.preview = e
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后是触发更改 onmouseover 的子组件:
<template>
<div @mouseover="set">
<slot></slot> <!-- some random content -->
</div>
</template>
<script>
export default {
props: ['target'] …Run Code Online (Sandbox Code Playgroud) 我对贾克斯有以下疑问。我将使用官方optax 文档中的一个示例来说明它:
def fit(params: optax.Params, optimizer: optax.GradientTransformation) -> optax.Params:
opt_state = optimizer.init(params)
@jax.jit
def step(params, opt_state, batch, labels):
loss_value, grads = jax.value_and_grad(loss)(params, batch, labels)
updates, opt_state = optimizer.update(grads, opt_state, params)
params = optax.apply_updates(params, updates)
return params, opt_state, loss_value
for i, (batch, labels) in enumerate(zip(TRAINING_DATA, LABELS)):
params, opt_state, loss_value = step(params, opt_state, batch, labels)
if i % 100 == 0:
print(f'step {i}, loss: {loss_value}')
return params
# Finally, we can fit our parametrized function using the Adam optimizer
# …Run Code Online (Sandbox Code Playgroud)