求问vue3通过reactive创建的数据怎么进行初始化

发布于 2022-09-12 23:51:29 字数 64 浏览 22 评论 0

在vue2中可以通过this.$options.data().xxx直接赋值 那在vue3的setup中咋整。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

半衬遮猫 2022-09-19 23:51:29

这样?

{
  setup () {
    const getInitalState = () => {
      return {
        a: 1
      }
    }
    
    const state = reactive(getInitalState())
    
    const resetState = () => {
      Object.assign(state, getInitalState())
    }
  }
}
-柠檬树下少年和吉他 2022-09-19 23:51:29

不明白你的初始化是什么意思。。一般直接声明使用就好了

<List :data="data.list">
...
...
setup() {
  let data = reactive({
     list:[]
  })
  let loadData = () => {
     data.list = [{name:'a'},{name:'b'}]
  }
  loadData()
  return {
    data
  }
}
我不是你的备胎 2022-09-19 23:51:29
# https://github.com/bravf/vue2hooks/blob/master/src/hooks/quickState.js
# 参考这个老哥的方法,我这里直接改成reactive了。因为composition-api里面的reactive也是基于observable实现的。不用在单独取一遍。。
<template>
  <div>
    <label label="name">
      <input v-model="writeQState.state.name" />
    </label>
    <label label="gender">
      <input v-model="writeQState.state.gender" />
    </label>
    <button @click="writeQState.reset">Reset</button>
  </div>
</template>
<script>
import { defineComponent, reactive } from "@vue/composition-api";
import clonedeep from "lodash.clonedeep";
export default defineComponent({
  setup() {
    const useQuickState = (params = {}) => {
      const state = reactive(params);
      const backupState = clonedeep(state);
      const reset = () => {
        Object.assign(state, cloneBackup());
      };
      const clone = () => clonedeep(state);
      const cloneBackup = () => clonedeep(backupState);
      return {
        state,
        backupState,
        clone,
        reset,
        assign: (newParams) => Object.assign(state, newParams),
        cloneBackup,
      };
    };

    const writeQState = useQuickState({
      name: "123",
      gender: "444",
    });
    return {
      writeQState,
    };
  },
});
</script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文