RiotJS onclick 在加载时触发
RiotJS onclick triggering on load
我正在使用 RiotJS 编写一个 table 应用程序,我一直 运行 遇到与 onclick 事件相同的问题。几乎每次我尝试使用
<tag onclick={somefunction}>
我的行为非常古怪。有时它会在页面加载或更新时多次调用该函数,然后根本不响应点击,有时它会在启动时触发多次。我似乎无法找出问题背后的模式,尽管我注意到它往往是在线函数调用的问题,例如
<tag onclick={console.log("foo")}>
引用传递较少 <tag onclick={function}>
尽管两者都会发生。有没有人经历过这样的事情?如果您需要更多上下文,请发表评论。
在 Riot 中,{}
表达式在挂载/更新时计算。
这意味着如果 {}
中的是一个函数调用,它将在挂载标签更新时执行,每次它所在的部分被评估时。
这与普通的 javascript 不同,在普通的 javascript 中,onclick 甚至在单击该内容之前都不会被解析。
这可能会导致一些混乱,因为 Riot 并不总是按照您的想法解析 {}
表达式。这对于复合表达式(具有布尔逻辑 ||
和 &&
等的表达式)尤其麻烦
在这种情况下,Riot 中的 onclick
正在寻找一个表达式/函数......它会尝试根据标签本身对其进行评估......换句话说,这个:
<button onclick={foobar}>Click me!</button>
Riot 将在单击时尝试执行 this.foobar()
。
通常,我会尝试通过在标记的 <script>
部分设置我的方法来利用它。这为我的 {}
表达式的误解留下了很小的空间,并将逻辑位从标记的 HTML 部分移出,并移至脚本部分中我期望行为的位置。
我正在使用 RiotJS 编写一个 table 应用程序,我一直 运行 遇到与 onclick 事件相同的问题。几乎每次我尝试使用
<tag onclick={somefunction}>
我的行为非常古怪。有时它会在页面加载或更新时多次调用该函数,然后根本不响应点击,有时它会在启动时触发多次。我似乎无法找出问题背后的模式,尽管我注意到它往往是在线函数调用的问题,例如
<tag onclick={console.log("foo")}>
引用传递较少 <tag onclick={function}>
尽管两者都会发生。有没有人经历过这样的事情?如果您需要更多上下文,请发表评论。
在 Riot 中,{}
表达式在挂载/更新时计算。
这意味着如果 {}
中的是一个函数调用,它将在挂载标签更新时执行,每次它所在的部分被评估时。
这与普通的 javascript 不同,在普通的 javascript 中,onclick 甚至在单击该内容之前都不会被解析。
这可能会导致一些混乱,因为 Riot 并不总是按照您的想法解析 {}
表达式。这对于复合表达式(具有布尔逻辑 ||
和 &&
等的表达式)尤其麻烦
在这种情况下,Riot 中的 onclick
正在寻找一个表达式/函数......它会尝试根据标签本身对其进行评估......换句话说,这个:
<button onclick={foobar}>Click me!</button>
Riot 将在单击时尝试执行 this.foobar()
。
通常,我会尝试通过在标记的 <script>
部分设置我的方法来利用它。这为我的 {}
表达式的误解留下了很小的空间,并将逻辑位从标记的 HTML 部分移出,并移至脚本部分中我期望行为的位置。