Function 使用苗条组件导出函数

Function 使用苗条组件导出函数,function,components,export,svelte,Function,Components,Export,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);

我是苗条新手,需要一些帮助。我有一个重量换算函数,可以计算磅和公斤之间的换算。有两个输入,输入磅值将自动显示千克,反之亦然

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">
    {#each antibiotics as antibiotic, i}

    <div>{((k * antibiotic.dosevalue) / antibiotic.concs).toFixed(2)}</div>

     <div> {(k *   antibiotic.dosevalue).toFixed(2)} </div>

    {/each}

然后,我使用k值计算药物剂量,单位为mg和mls,数值来自药物数组。当重量改变时,剂量和体积也会改变

计算的剂量和体积设置如下:

 <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">
    {#each antibiotics as antibiotic, i}

    <div>{((k * antibiotic.dosevalue) / antibiotic.concs).toFixed(2)}</div>

     <div> {(k *   antibiotic.dosevalue).toFixed(2)} </div>

    {/each}
{#每种抗生素都是抗生素,i}
{((k*抗生素剂量值)/抗生素浓度.toFixed(2)}
{(k*抗生素剂量值).toFixed(2)}
{/每个}
编辑和更新的REPL

它工作得很好。我想做的是设置一个轻巧的组件,这样我就可以导出html和两个函数,以便在许多不同的页面中使用

权重转换.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"`
   <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>

设k='';
设l='';
导出函数setBothFromK(值){
k=+值;
l=+(k*2.2046226218).toFixed(1);
}
导出函数setBothFromL(值){
l=+值;
k=+(l/2.2046226218).toFixed(1);
}
要从组件导出函数,必须将其绑定到调用父级中,然后该函数将在该父级中的任何其他位置可用


让我的心改变;

您可以利用
context=“module”
脚本标记从组件导出函数

例如:


根据指导原则,我不应该回答这个问题,但我觉得我想插嘴。在阅读你的帖子时,关于何时使用苗条的某些部分,似乎有些困惑。例如,如果需要从Javascript更改组件,则只导出模块函数。因为你有改变值的输入,所以没有必要这样做

所有的计算和常量都可以放在组件内部,并且只有每个组件更改的值可以通过组件属性更改

计算不起作用的原因是变量被初始化为字符串而不是数字


这是基于我对您的用例的理解。

谢谢。不幸的是,这两个输入都需要存在,因此权重转换将起作用,而当我同时存在这两个输入并使用
myweightconvert.setBothFromK
myweightconvert.setBothFromL
时,我无法使该函数起作用。我可能遗漏了什么?在REPL中尝试了这个,但它不起作用。你能澄清App.svelte和Weightconvert.svelte应该是什么样子吗?我不明白为什么App.svelte中会包含
,因为Weightconvert.svelte包含输入。是的,我在发布之前就看过了。谢谢尝试了但没有成功,所以我的代码仍然需要帮助。谢谢你的例子。问题是,我只需要一组重量转换输入,而不是每种药物一个。这在示例中。如果这对你有帮助,你能把我的答案记为正确吗?