【问题标题】:How in vuex.js to save in the "store" the text entered in the input? Where did i make a mistake?如何在 vuex.js 中将输入中输入的文本保存在“存储”中?我在哪里做错了?
【发布时间】:2019-08-13 18:13:55
【问题描述】:

我受苦第三天。请帮帮我。 vuex.js中如何将输入的文本保存在“store”中,然后添加到同一个输入本身的Value中。

我正在尝试这样做,但在某个地方我犯了一个错误。

HTML

<f7-list-input
  label="Username"
  name="username"
  placeholder="Username"
  type="text"
  :value="newUserName"
  @input="username = $event.target.value"
  required validate
  pattern="[3-9a-zA-Zа-яА-ЯёЁ]+"
  v-model="saveUserName"
/>

脚本

export default {
  data() {
    return {
      username: '',
      password: '',
    };
  },
  methods: {
    signIn() {
      const self = this;
      const app = self.$f7;
      const router = self.$f7router;
      router.back();
      app.dialog.alert(`Username: ${self.username}<br>Password: ${self.password}`, () => {
        router.back();
      });
    },
    saveUserName(){
        this.$store.commit(saveName);
    }
  },
  computed:{
     userName(){
         return this.$store.state.newUserName;
     }
  }
};

商店

export default new Vuex.Store({
    state:{
        userNameStor: 'newUserName',
        userPasswordStor:''
    },
    mutations:{
        saveName(state){
            userNameStor:newUserName;
            return newUserName;
        }
    }
});

【问题讨论】:

    标签: javascript vue.js vuex


    【解决方案1】:

    让我们解释一下整个功能,然后是一些代码。

    输入在组件的模板部分。

    该组件还包含一个脚本部分,它根据模板事件触发代码等。 组件代码可以触发突变(用于状态更改),这是您在商店中存储内容的方式。

    你有这个屏幕来存储流量:

    1/ 组件模板事件 => 2/ 组件脚本代码 => 3/ 在 store 上执行突变

    另一方面,你有这个: state => 组件计算属性中的 mapMutation => 组件模板。

    在组件脚本中,您可以将存储值映射到组件的计算属性(使用 mapMutations 助手)。然后从组件计算属性映射到模板中的这个字段。

    1 - 您的模板 @input 是用户操作更改输入时发生的事件。 :value 是输入的值,以编程方式定义。 v-model 是同时使用 @input 和 :value 的捷径。不要将它与 :value 和 @input 一起使用。

    好的最小模板:

    <f7-list-input
      type="text"
      :value="username"
      @input="changeUsername"
    />
    

    在脚本中,您只需要将 changeUsername 方法链接到突变(使用 mapMutation),并定义一个名称为 username 的计算属性,该属性是来自商店的用户名映射(使用 mapState)。

    import {mapState, mapMutations} from "vuex"
    
       export default {
          methods:{
             ...mapMutations({
            changeUsername:"saveName"
          },
          computed:{
             ...mapState({
                username:state=>state.username
            }),
          }
        };
    

    考虑查看有关 mutationsstate 的 Vue 文档

    【讨论】:

    • 忘了说输入的不是主vue.js,是单独的组件login.js
    • 没问题,它的工作原理是一样的。 mapState、mapMutations 和 mapActions 适用于每个组件。
    • 不客气。经过一些工作后,Vue 很棒。只需投票给答案,因为这是我的反馈:)
    • 你能帮我解决这个问题吗?在将值保存到本地存储之前,我不知道如何将值从输入传输到块。 stackoverflow.com/questions/55799648/…
    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2019-09-13
    • 2010-11-03
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多