function - 使用 Svelte 组件导出函数
问题描述
我是苗条的新手,需要一些帮助。我有一个重量转换函数,可以计算磅和公斤之间的转换。有两个输入,输入磅值将自动显示公斤,反之亦然。
let k = '';
let l = '' ;
function setBothFromK(value) {
k = +value;
l = +( k * 2.2046226218).toFixed(1);
}
function setBothFromL(value) {
l = +value;
k = +( l / 2.2046226218).toFixed(1);
}
输入设置如下:
<input id="inputKilograms" name="inputKilograms" type="number" placeholder="kgs"
bind:value={k} on:input="{e => setBothFromK(e.target.value)}" min="0">
<input id="inputPounds" name="inputPoundsE" type="number" placeholder="lbs"
bind:value={l} on:input="{e => setBothFromL(e.target.value)}" min="0">
然后,我使用值 k 来计算以 mg 和 mls 为单位的药物剂量,并使用数组药物提供的值。当重量发生变化时,剂量和体积也会发生变化。
计算的剂量和体积设置如下:
{#each antibiotics as antibiotic, i}
<div>{((k * antibiotic.dosevalue) / antibiotic.concs).toFixed(2)}</div>
<div> {(k * antibiotic.dosevalue).toFixed(2)} </div>
{/each}
编辑和更新的 REPL
它运作良好。我要做的是设置一个苗条的组件,这样我就可以导出 html 和 2 个函数以在许多不同的页面中使用。
Weightconvert.svelte是:
<script>
let k = '';
let l = '';
export function setBothFromK(value) {
k = +value;
l = +( k * 2.2046226218).toFixed(1);
}
export function setBothFromL(value) {
l = +value;
k = +( l / 2.2046226218).toFixed(1);
}
</script>
<input id="inputPounds" name="inputPounds" type="number" placeholder="lbs"
bind:value={l} on:input="{e => setBothFromL(e.target.value)}" min="0">
<input id="inputPounds" name="inputKilograms" type="number" placeholder="kgs"
bind:value={k} on:input="{e => setBothFromK(e.target.value)}" min="0"`
App.svelte是:
<script>
let k = '';
let l = '' ;
import Weightconvert, {setBothFromK , setBothFromL } from './Test.svelte';
let dosevalue = 20;
let concs = 3;
</script>
<Weightconvert ></Weightconvert>
<div bind:this={k}> Dose: {(k * dosevalue).toFixed(2)}</div>
<div bind:this={k}> Volume: {((k * dosevalue) / concs).toFixed(2)} </div>
重量转换器功能在每一页都有效,但不会计算剂量和体积。作为一个新手,我不确定如何让它发挥作用。谢谢你的帮助。
这是一个具有基本功能但没有组件导入的REPL
解决方案
根据指导方针,我不应该回答这个问题,但我倾向于加入。阅读你的帖子似乎对何时使用 Svelte 的某些部分存在相当大的困惑。例如,如果您需要从 Javascript 更改组件,您只会导出模块函数。而且由于您有更改值的输入,因此没有必要这样做。
所有的计算和常数都可以放在组件内,只有每个抗生素变化的值可以通过组件属性进行更改。
计算不起作用的原因是变量被初始化为字符串而不是数字。
根据我对您的用例的理解,这就是我将如何处理它。
推荐阅读
- c - 在我自己的 shell 中实现此处字符串重定向后如何修复“错误文件描述符”
- selenium - 如何在 selenium 中为多种方法使用变量?
- swift - #keyPath 而不是直接将键作为字符串传递有什么用?
- mathnet-numerics - 如何处理/访问 MathNet 中的“深层”错误:参数 4 是什么?
- r - 使用 dplyr 按组预测线性回归
- airflow - 如果计划间隔小于 v1.10.2 的 Airflow.cfg 中的 min_file_process_interval 值,则不会按照其计划提取 Dag
- java - RSA 和非对称加密上下文中的证书是什么?
- javascript - 范围问题,或通过引用传递,或其他什么?
- terraform - 如何在同一个列表上迭代多个资源?
- vhdl - VHDL & GTKWAVE:如何让“u”位值的总线以红色而不是绿色显示?