Как сделать рекурсивное действие / мутацию в vuex - PullRequest
1 голос
/ 19 июня 2020

Я пытаюсь найти последовательность Фибоначчи, используя состояние и рекурсивное действие в vuex. В основном я пытаюсь переписать эту Javascript рекурсивную функцию с помощью vuex.

function fib(n) {
  if (n < 2){
    return n
  }
  return fib(n - 1) + fib (n - 2)
}

Однако, даже если я назначаю состояние действию, значение состояния никогда не меняется. Как заставить его работать? Я имею в виду ... Я борюсь с этим в течение нескольких дней, поэтому, если бы вы могли дать мне несколько советов или идей, это действительно помогло бы.

Спасибо. и это мой код ниже.

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export const store = new Vuex.Store ({
    state: {
        number: 8
    },
    mutations: {
        showTheNumber: (state) => {
            return state.number
        }
    },
    actions: {
        findFibNum: ({ dispatch, commit, state }) => {
            if (state.number < 2) {
                return state.number
            } else {
                dispatch('findFibNum', state.number - 1) + dispatch('findFibNum', state.number - 2)
            }
            return commit('showTheNumber')// I am not sure if it is redundant 

        }
    }

, и именно так я вызываю и показываю значение store в компоненте.

<template>
    <div>
        <input @input="addUserInput"></input>
        <p>Counter is: {{ counter }}</p>   
    </div>

</template>

<script>
    export default {
        methods: {
            addUserInput () {
                this.$store.dispatch('findFibNum')

            }
        },
        computed: {
            counter(){
                return this.$store.state.number;
            }
        }
    }
</script>

...