[解決済み] Vuex - 計算されたプロパティ "name "が割り当てられたが、セッターを持たない
2022-03-04 22:42:05
質問
フォームバリデーションを行うコンポーネントがあります。これは、複数段階のチェックアウトフォームです。以下のコードは、最初のステップのためのものです。ユーザーがテキストを入力したことを検証し、その名前をグローバルステートに保存して、次のステップに送りたいのです。使用しているのは ヴィーヴァリデート とvuex
<template>
<div>
<div class='field'>
<label class='label' for='name'>Name</label>
<div class="control has-icons-right">
<input name="name" v-model="name" v-validate="'required|alpha'" :class="{'input': true, 'is-danger': errors.has('name') }" type="text" placeholder="First and Last">
<span class="icon is-small is-right" v-if="errors.has('name')">
<i class="fa fa-warning"></i>
</span>
</div>
<p class="help is-danger" v-show="errors.has('name')">{{ errors.first('name') }}</p>
</div>
<div class="field pull-right">
<button class="button is-medium is-primary" type="submit" @click.prevent="nextStep">Next Step</button>
</div>
</div>
</template>
<script>
export default {
methods: {
nextStep(){
var self = this;
// from baianat/vee-validate
this.$validator.validateAll().then((result) => {
if (result) {
this.$store.dispatch('addContactInfoForOrder', self);
this.$store.dispatch('goToNextStep');
return;
}
});
}
},
computed: {
name: function(){
return this.$store.state.name;
}
}
}
</script>
私は、注文の状態を処理し、名前を記録するためのストアをもっています。最終的には、マルチステップフォームからすべての情報をサーバーに送信したいと思います。
export default {
state: {
name: '',
},
mutations: {
UPDATE_ORDER_CONTACT(state, payload){
state.name = payload.name;
}
},
actions: {
addContactInfoForOrder({commit}, payload) {
commit('UPDATE_ORDER_CONTACT', payload);
}
}
}
このコードを実行すると、次のようなエラーが発生します。
Computed property "name" was assigned to but it has no setter.
nameフィールドの値をグローバルステートにバインドするにはどうすればよいですか?ユーザーが("Next Step"をクリックして)1ステップ戻っても、このステップで入力した名前が表示されるように、これを持続させたいと思います。
どのように解決するのですか?
もし、あなたが
v-model
を計算した場合、その計算には
セッター
. 更新された値に対して何をさせたいか(おそらくは
$store
ゲッターから取得することを考えると、セッターで行うことになります。
フォーム送信でストアに書き戻す場合、フォーム送信の際に
v-model
を設定するだけです。
:value
.
もし、どこかに保存されるけど、ソースを上書きしない中間状態を
$store
フォームを送信するまで、そのようなデータ項目を作成する必要があります。
関連
-
[解決済み】CypressとJestは併用した方がいい?
-
[解決済み] npm run dev」「npm run watch」はどのようなスクリプトですか?
-
未定義のプロパティ '0' を読み取ることができません。
-
vue リクエストエラー Uncaught (プロミス内)
-
vue3 が axios エラーを導入する 未定義または null をオブジェクトに変換できない
-
プロジェクトノート ---- TypeErrorに遭遇しました。"_vm.xxxxxx は関数ではありません"
-
[解決済み] Nuxt.jsで "window is not defined "と表示される。
-
[解決済み】Vueのデータからhrefに値を渡すには?
-
[解決済み】Vue.jsの別ページへのリダイレクトについて
-
[解決済み】Vuejs:ルート変更時のイベント
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] オブジェクトのリストからオブジェクトを選択するBootstrap vue b-form-select
-
[解決済み] Vue 2.0でコンポーネント自身を削除する方法
-
[解決済み] プロジェクトのvue.jsのバージョンを確認する方法は?
-
vue リクエストエラー Uncaught (プロミス内)
-
TypeError: undefinedはオブジェクトではありません('i18n._t'を評価中)。
-
vue springboot reports error DOMException: XMLHttpRequest'の'send'の実行に失敗しました。ロードに失敗しました
-
[解決済み】Vue.js - urlからハッシュバン#!を削除するには?
-
[解決済み] Vueプロジェクトにおけるviewsフォルダとcomponentsフォルダの違いは何ですか?
-
[解決済み] Vueアプリのビルドを生成するには、どのコマンドを使用すればよいですか?
-
[解決済み] Vue.js - シングルファイルコンポーネントでヘルパー関数をグローバルに利用できるようにする