代码之家  ›  专栏  ›  技术社区  ›  tkon99

仅从服务器上的nuxt.js中的数组中选择随机项

  •  0
  • tkon99  · 技术社区  · 5 年前

    我目前使用以下 component.vue 但是,这会使其计算两次(渲染时一次 服务器端 ,一次上 客户机 )因为它是随机的,用户会看到城市闪光一秒钟(然后切换到另一个)。

    防止这种情况的最有效方法是什么?

    export default {
            data(){
                return {
                    cities: ["Rome", "Amsterdam", "Paris", "Berlin", "London", "Athens", "Madrid"],
                    city: ''
                }
            },
            created(){
                this.city = cities[Math.floor(Math.random()*cities.length)];
            }
        }
    
    1 回复  |  直到 5 年前
        1
  •  0
  •   tkon99    5 年前

    page.vue 我用过 异步数据 设置数据 服务器端 渲染过程中,如:

    export default {
        components: {
             'component'
        },
        data(){
             return {
                 city: ''
             }
        },
        asyncData (context){
             let cities = ["Rome", "Amsterdam", "Paris", "Berlin", "London", "Athens", "Madrid"];
             const city = cities[Math.floor(Math.random()*cities.length)];
             return {
                  city: city
             }
        }
    }
    

    现在我们有了变量 city 对于随机城市,使用道具或 this.$parent.city 在组件中。