javascript - 如何使用 createElement 渲染函数在 javascript 中编写 vue.sync

标签 javascript vue.js synchronization vuejs2

我正在将我的代码从模板文件更改为渲染函数。现在我有了这个 HTML:

:open.sync="state"

但我不知道如何将其转换为 JavaScript。如何将其写入 createElement 函数?

最佳答案

记住这一点

:open.sync="state"

基本上是

的语法糖
:open="state" @update:open="state = $event"

那么渲染函数中的等价物将是:

createElement('child', {
  props: {                                   // :open="state"
    "open": this.state
  },
  on: {                                      // @update:open="state = $event"
    "update:open": ($event) => {
      this.state = $event;
    }
  }
})

演示:

Vue.component('child', {
  template: '#child',
  props: ['open']
})

new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!'
  },
  render(createElement) {
    return (
      createElement('div', [
        this.message,
        createElement('br'),
        createElement('child', {
          props: {
            "open": this.message
          },
          on: {
            "update:open": ($event) => {
              this.message = $event;
            }
          }
        })
      ])
    );
  }
})
<script src="https://unpkg.com/vue"></script>

<div id="app">
  <p>{{ message }}</p>
  <child :open.sync="message"></child>
</div>

<template id="child">
  <div>
    <input type="text" :value="open" @input="$emit('update:open', $event.target.value)">
    open: {{ open }}
  </div>
</template>

关于javascript - 如何使用 createElement 渲染函数在 javascript 中编写 vue.sync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50041991/

相关文章:

javascript - 克隆对象并更新 View

javascript - 如何在 Javascript 中将 slider 绑定(bind)到变量?

javascript - 是否可以在 html 中声明 Javascript 函数变量?

javascript - 504(网关超时)问题

vue.js - Vue - 更改/设置模板中的变量值

c# - 为什么必须在 lock 语句中指定同步对象

javascript - 使用 Vue.JS 和 Axios 在 Asp.Net Core 中发布错误

javascript - Vue JS 将递增的数字保存到 Firebase 数据库

time - 网络时间协议(protocol)如何工作?

javascript - 调用两个 JS 函数并同步它们(snakeAnim 和 Animated Marker)