<template>
  <b-container>
    {{ip}}
    <b-row>
      <b-col md="4" sm="2">1 of 3</b-col>
      <b-col md="4" sm="2">2 of 3</b-col>
      <b-col md="4" sm="8">3 of 3</b-col>
    </b-row>
  </b-container>
</template>

<script>
  export default {
    middleware: 'auth',
    //用于请求数据,返回的数据会作用在data上
    async asyncData({ $axios }) {
      const ip = await $axios.$get('http://icanhazip.com');
      return { ip }
    },
    //无法在内部使用this获取组件实例
    //fetch 方法用于在渲染页面前填充应用的状态树(store)数据
    //与 asyncData 方法类似,不同的是它不会设置组件的数据。
    async fetch ({ store, params,$axios }) {
      let ip = await $axios.$get('http://icanhazip.com')
      store.commit('todos/SET_IP', ip)
    },
    mounted(){
      console.log(this.$store)
    },
    data() {
      return {
        ip: '0.0.0.0'
      }
    },
    methods: {
      async fetchSomething() {
        const ip = await this.$axios.$get('http://icanhazip.com');
        this.ip = ip
      }
    }
  }
</script>

<style lang='scss'>
  @import "style";

</style>