I am new to Vue and stuck. I am trying to send user input data from a form into a vuex store. From that vuex store, an action will be called (fetching from API) and I would like that data back into my app and components.
<template>
  <div>
    <h1>APP NAME</h1>
    <form action="submit" @submit.prevent="sendCityName()">
      <label for="query"></label>
      <input 
      type="text"
      id="query"
      v-model="cityName"
    >
      <button type="submit">Submit</button>
    </form>
    <h3>{{ lat }}</h3>
  </div>
</template>
<script>
import { mapState } from 'vuex'
export default {
  data() {
    return {
      cityName: ''
    }
  },
  computed: {
    coordinates () {
      return this.$store.state.lat
    }
  },
  methods: {
    sendCityName() {
      this.$store.commit('fetchCity', this.cityName)
    }
  },
}
</script>
Here is my index.vue and getting the error "Cannot read properties of undefined (reading 'commit')"
here is my store.js. I want to use the lat and lon across my app.
export const state = () => ({
    lat: '',
    lon: ''
  })
  
export const mutations = {
    SET_LAT(state, payload){
      state.lat = payload
    },
    SET_LON(state, payload){
      state.lon = payload
    }
  }
  
export const actions = {
    async fetchCity({ commit }, cityName) {
      // make request
      axios.get(
        `https://api.openweathermap.org/geo/1.0/direct`, {
          params: {
            appid: "xxxxxxx",
            q: cityName,
          }
        }).then((response) => {
            commit('SET_LAT', response.data[0].lat);
            commit('SET_LON', response.data[0].lng);
        }); 
    },
  };
When I button submit I get the error "Cannot read properties of undefined (reading 'commit')"
 
     
    