小编Vam*_*hna的帖子

为 Bloc 使用单例

我知道我的一些 BLOC 在整个应用程序生命周期中只会被实例化一次。将这些 BLOC 类创建为单例是不好的做法还是反模式。Singleton 可以帮助在任何地方访问 BLOC,并确保该类仅实例化一次。

我还可以确保在另一个 BLOC 中使用一个 BLOC 并传递单例时是安全的,就好像它是“只是另一个”实现一样。

这样做可能会产生什么影响?

编辑

我有两个区块

  1. AuthenTicationBloc - 这是一个全球集团
  2. UserBloc - 应该只存在一次(单例)

AuthenTicationBloc 必须使用其中的 UserBloc。如果我将 UserBloc 设为单例,那么将其用作 UserBloc().

否则,我必须在 AuthenTicationBloc 中创建 UserBloc 作为实例变量,如下所示:

class AuthenTicationBloc {
  UserBloc _userBloc;

  AuthenTicationBloc({@required UserBloc userBloc}) : _userBloc = userBloc;


  myMethod(){
    //use the userBloc
    _userBloc.setDetails();
  }
}


runApp(
  UserBloc userBloc = UserBloc();

  Provider(
    value: AuthenTicationBloc(userBloc: userBloc),
    child: MyApp(),
  ),
);
Run Code Online (Sandbox Code Playgroud)

如果我必须在其他地方的小部件链中使用 UserBloc,我必须使 UserBloc 也按如下方式全局提供,对吗?

UserBloc userBloc = UserBloc();

MultiProvider(
  providers: [
    Provider<AuthenTicationBloc>(
      value: AuthenTicationBloc(userBloc:userBloc),
    ), …
Run Code Online (Sandbox Code Playgroud)

singleton dart flutter bloc

8
推荐指数
1
解决办法
3685
查看次数

v-for循环和键属性的使用

无法更恰当地设置标题,对此表示抱歉。

  • 我的数据属性中有一个[],其中充满了来自外部API的调用

  • 我在模板v-for主div上循环使用[] ,并填充页面

  • 每个div中都有一个可切换的div,默认情况下它是隐藏的,并且可以切换是否显示

这是代码

<template>

  <div>    
      // MAIN DIV
      <div v-for="(item, index) in myArray :key="index"> 
          //populate the elements using revelevant data
        <button @click="toggleDiv"">show/hide</button>

        //togglelable div
           <div v-if="displayDiv">
            //some data
        </div>
      </div>
  </div>
</template>

<script>
    export default{
        data(){
            return{
                myArray: [],
                displayDiv: false
            }
        },
        methods: {
            toggleDiv(){
                this.displayDiv = !this.displayDiv;
            }
        }

    }
</script> 
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题

  • 当我单击特定div中的按钮以显示隐藏的div时,其余所有div的所有隐藏的div也都将显示

  • 我如何限制这种情况的发生,以便在单击该div的相应按钮时仅切换相应的隐藏div

  • 我应该使用key属性让vue区分div还是我应该使用任何逻辑

vue.js vue-component vuejs2

5
推荐指数
1
解决办法
1万
查看次数

在不同模块的突变中访问rootState

我有几个vuex模块。为了简单起见,我将以一个我所面临的例子来说明我的问题:

我有2个vuex模块firstModule.jssecondModule.js

firstModule.jsmyArray[ ]它的状态:

//firstModule

const state = {
    myArray: [//has some items]
} 
Run Code Online (Sandbox Code Playgroud)

secondModule.js中,我有一个动作,该动作可以从外部API异步获取一些数据。

此操作会产生一个突变,该突变应搜索firstModule的是否存在获取的数据 myArray[ ]

  • 如果获取的数据存在于firstModule的中 myArray[ ],则将其添加到secondModule的 newArray[ ]

    const state = {
        newArray: []
    }
    
    const mutations = {
        addToNewArray: (state, payload) => {
            function findIyem(value){
                return value === payload.data;
            };    
    
            var item = payload.rootData.myArray.find(findItem);
            state.newArray.push(payload.data);
        }
    }
    
    const actions = {
        fetchData: ({commit, rootState}) => {
            // …
    Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuex vuejs2

5
推荐指数
1
解决办法
5922
查看次数

Vuejs:使用keep alive的子routerview组件的生命周期挂钩

为了清楚理解,我将以更笼统的方式解释我的问题,这是jsFiddle

我有两条主要路线,分别显示了两个不同的组成部分 router-view

  • 单击路径1时,路径为:“ / route-1”

  • 单击路径2时,路径为:“ / route-2 / sub-route-a”

Route-2router-view内部包含另一个,显示两个子路由:

  • 子路由

  • 子路由b

路由-2被点击它打开的部分路线-2子路由一个预开设了router-view

Route-2内的主路由器视图和路由器视图都包装在keep-alivetag内,以便进行缓存

缓存,一切正常。

我添加了所有生命周期挂钩,并使用console.log查看调用了哪个挂钩

  • 这是第一次对预期的全部组件beforeCreate()created()beforeMount()mounted()钩子被调用。

  • 由于router-view在keep-alive元素下,因此该activated()钩子也称为

  • 每当我来回移动之间的Route-1路径2activated()deactivated()输入并分别放置每个组件时钩子被称为

我的问题来了

  • 从什么时候开始的Route-2被点击它打开的部分 路线-2子路由一在其预先打开router-view,所有的生命周期挂钩子路由一个 componenents被称为只有一次

  • 当我回去的Route-1 deactivated()路由-2的调用,但没有勾子路径,一个被调用。

  • 仅当我在 …

vue.js vue-router vue-component vuejs2

5
推荐指数
1
解决办法
2396
查看次数

使用vuejs时如何在url中传递多个参数

嘿,我试图在我的 url 中传递两个参数以用于一个简单的 spa,并且将使用 api 从 url 中提取参数值并将其传递到服务器,这里是 url:

http://localhost:8080/#/游戏/用户名/令牌

但是当我点击 url 时,它会在网络中传递这个:

请求网址:http://localhost:8080/api/game/usernametoken

因此它没有找到正确的 api

路由器

    {path:'game/:name/:token', name:'game', component: game  }
Run Code Online (Sandbox Code Playgroud)

前端:

this.$http.get('/api/game/'+this.$route.params.name+this.$route.params.token)
Run Code Online (Sandbox Code Playgroud)

服务器端:

app.get('/api/game/:name/:token',function(req,res,err){
      var tex = {push:false};
    console.log("diplaying token from the server"+req.params.name+req.params.token)
    res.end(JSON.stringify(tex));

})
Run Code Online (Sandbox Code Playgroud)

parameters vue.js

5
推荐指数
1
解决办法
2万
查看次数

router-link 和 href 在 Vue js 中不起作用

我正在学习 vue js,我创建了一个管理页面,当我使用 router-view 时我可以路由该页面,但是当我尝试 href 或 router-link 时,我无法加载模板,认为 url 已更改。

这是我的 main.js

    import Vue from 'vue'
    import VueResource from 'vue-resource'
    import VueRouter from 'vue-router'
    import App from './App.vue'

    import admin from "./components/admin/admin.vue"
    import users from "./components/users.vue"


    Vue.use(VueRouter);
    Vue.use(VueResource);

    const router = new VueRouter({
        routes: [
            {path:'/admin',component:admin},
            {path:'/users',component:users},

        ]
    })


    new Vue({
        el: '#app',
        router: router,

        render: h => h(App)
    })
Run Code Online (Sandbox Code Playgroud)

这是我的app.vue

这是我的应用程序 vue 文件,它只想通过 href 路由到页面

    <template>
      <div class = "container" id="app">

          <h1>Hi from</h1>

          <hr>
          <a href="/api/users">sdsd</a>


      </div>
    </template> …
Run Code Online (Sandbox Code Playgroud)

routes vue.js routerlink

4
推荐指数
1
解决办法
4万
查看次数

在安装时仅在vue中重新加载页面一次

当用户访问该页面时,我希望页面只刷新一次.

但是,如果我把location.reload()mounted().它会触发无限循环页面重新加载

javascript vue.js vuejs2

2
推荐指数
1
解决办法
2472
查看次数