标签: state-management

从Vuex行动中回复承诺

我最近开始将事物从jQ迁移到更结构化的框架VueJS,我喜欢它!

从概念上讲,Vuex对我来说已经是一个典型的转变,但我相信我现在知道它的全部内容,完全得到它!但是存在一些小的灰色区域,主要是从实施的角度来看.

我觉得这个设计很好,但不知道它是否与单向数据流的Vuex 周期相矛盾.

基本上,从动作中返回一个promise(类似)对象被认为是一种好习惯吗?我将它们视为异步包装器,具有失败状态等,因此似乎非常适合返回一个承诺.相反,mutators只是改变了一些东西,而且是商店/模块中的纯粹结构.

state-management promise vue.js es6-promise vuex

98
推荐指数
3
解决办法
7万
查看次数

缓存VS Session VS cookies?

有关Cache VS Session VS Cookies的注意事项有哪些?

例如:
我正在使用会话变量很多,当用户开始订购产品然后去吃午饭并在几个小时后回来继续预订时,有时会在预订应用程序中出现问题.我将预订存储在会话中,直到用户确认或中止预订,因此当用户只需在浏览器中单击X并且永不返回时,我无需与数据库通信并处理数据库中的中途预订.

我应该使用缓存或cookie或某种组合吗?

(此外,当应用程序中出现一些错误时,会话对象会自行重置,因此我会遇到更多问题)

我主要做桌面编程,觉得我在这里缺乏很多知识,所以任何可以扩展使用Cache,Session,Cookies(或db)的人都会受到赞赏

编辑:从答案看来,似乎DB和Cookie的组合是我想要的.

  1. 我必须将预订存储在连接到会话ID的数据库中
  2. 将session-id存储在cookie中(加密).
  3. 每个页面加载检查cookie并从数据库中获取预订
  4. 我有一个清理程序,每周运行一次,清除未完成的预订.

我不能将预订存储为cookie,因为用户可以更改价格和其他敏感数据,我必须验证所有内容(不能信任数据).

我做对了吗?

谢谢你们所有人的出色解释!

asp.net cookies session state-management

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

Angular 6 - 为什么使用@ngrx/store而不是服务注入

我最近在@ngrx/store学习Angular 6,而其中一个教程是使用@ngrx/store进行状态管理,但我不明白在场景后面使用@ngrx/store的好处.

例如,对于简单的登录和注册操作,以前通过使用该服务(让我们称之为AuthService),我们可以使用它来调用后端api,在AuthService中存储"userInfo"或"token",将用户重定向到"HOME"在我们需要通过使用DI获取userInfo的任何组件中注入AuthService,只需要一个文件AuthService处理所有内容.

现在,如果我们使用@ngrx/store,我们需要定义Action/State/Reducer/Effects/Selector,它可能需要写入4或5个文件来处理上述动作或事件,然后有时我们还需要调用backend api使用服务,这看起来要复杂多余......

在其他一些场景中,我甚至看到一些页面使用@ngrx/store来存储对象或对象列表,如网格数据.,是对某种内存存储使用情况的?

回到这个问题,为什么我们在Angular项目中使用@ngrx/store而不是服务注册存储? 我知道这是用于" 国家管理 "的用法,但究竟什么是"国家管理"?这是什么类似事务日志,我们什么时候需要它?我们为什么要在前端管理它?请随时在@ngrx /商店区分享您的建议或经验!

state-management ngrx-store angular5 angular6

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

ChangeNotifierProvider 与 ChangeNotifierProvider.value

我对这个框架很陌生,并且使用我遇到的提供程序包进行状态管理ChangeNotifierProviderChangeNotifierProvider.value,但我无法区分它们的用例。

我曾用ChangeNotifierProvider代替ChangeNotifierProvider.value,但它没有按预期工作。

provider frameworks state-management flutter

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

Backbone.js基于url片段的状态管理/视图初始化

我正在尝试使用Backbone.js跟踪此应用中的状态:

在此输入图像描述

我有一个带有一组默认值的"ChartAppModel":

ChartAppModel = Backbone.Model.extend({

defaults: { 
    countries : [], 
    selectedCountries : [],
    year : 1970,
},

initialize: function() { 
    loadAbunchOfData();
    checkStartState();
}

});
Run Code Online (Sandbox Code Playgroud)

如果给定一个开始片段,则应该覆盖此默认状态:

var startState = $.deparam.fragment(); //using Ben Alman's BBQ plugin
this.set({selectedCountries: startState.s, year: startState.y});
Run Code Online (Sandbox Code Playgroud)

现在,例如SidebarView已准备好更新:

ChartAppViewSidebar = Backbone.View.extend({

initialize: function(){
      this.model.bind("change:selectedCountries", this.render);
},

render : function(){
      [... render new sidebar with check boxes ...]
},
Run Code Online (Sandbox Code Playgroud)

问题是我在侧边栏上还有一个更新模型的事件处理程序:

events: {
"change input[name=country]": "menuChangeHandler",
},

menuChangeHandler : function(){
      [... set selectedCountries on model ...]
},
Run Code Online (Sandbox Code Playgroud)

所以会有一个反馈循环...然后,我也想要一种推动新状态的方式 - 所以我听模型的变化:

ChartAppModel …
Run Code Online (Sandbox Code Playgroud)

javascript model-view-controller state-management backbone.js

25
推荐指数
1
解决办法
8245
查看次数

Flutter:如何收听 FirebaseUser 是电子邮件验证布尔值?

我的想法: 我想在 Flutter 中使用 Firebase Auth 插件来注册用户。但在他们可以访问应用程序之前,他们必须验证他们的电子邮件地址。因此,我在注册后将 Firebase 用户推送到验证屏幕。这只是一个加载屏幕,告诉用户他必须验证他的电子邮件。

但是现在:如果用户的电子邮件是否经过验证并将他(如果为真)发送到主屏幕,我该如何持续收听?

我是 Flutter 的新手,我不知道我是否必须使用 Streams 或 Observables 或 while Loop 或 setState() 或其他东西来进行这样的布尔检查。而且我也不知道如何设置解决方案。

这是我注册用户的基本代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'dart:async';

class AuthService {
  final FirebaseAuth _auth = FirebaseAuth.instance;
  final Firestore _db = Firestore.instance;

  Future<FirebaseUser> get getUser => _auth.currentUser();

  Stream<FirebaseUser> get user => _auth.onAuthStateChanged;

  Future<FirebaseUser> edubslogin(String email, String password) async {
    try {
      final FirebaseUser user = await _auth.createUserWithEmailAndPassword(
        email: email,
        password: password,
      );
     
      await user.sendEmailVerification();
      
      //email verification somewhere here
    
      updateUserData(user);
      return user; …
Run Code Online (Sandbox Code Playgroud)

state-management dart firebase firebase-authentication flutter

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

如何在 Flutter 应用程序的 initState 期间使用来自 Provider 的数据

我通过添加 Provider 作为状态管理来重构我的 Flutter 应用程序代码。

期望的行为:当主屏幕打开时,应用程序应检查用户的电子邮件是否已验证,如果未验证,则应显示对话框弹出窗口。

问题:当我通过构造函数为 EmailVerified 传递数据时它工作正常,但是如果我想使用 Provider,我无法在initState()生命周期中获取这些数据。

您能否为我推荐这种用例的正确方法?

import 'package:myapp/services/authentication.dart';
import 'package:myapp/screens/settings_screen.dart';
import 'package:flutter/material.dart';
import 'package:myapp/services/authentication.dart';
import 'package:provider/provider.dart';

class HomeScreen extends StatefulWidget {

  @override
  State<StatefulWidget> createState() => new _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final GlobalKey<FormState> formKey = GlobalKey<FormState>();
  bool _isEmailVerified = false;

  @override
  void initState() {
    super.initState();
    _checkEmailVerification(); // <=== Method which should show Dialog box if email is not verified which is coming from "Auth" Provider
  }

  @override
  Widget build(BuildContext …
Run Code Online (Sandbox Code Playgroud)

state-management flutter flutter-layout flutter-provider flutter-state

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

如何在 Next.js 14 应用程序路由器中将数据从服务器组件传递到客户端组件?

如何在 Next.js 13 应用程序路由器中将数据从服务器组件传递到客户端组件?

我正在 page.tsx 中调用外部 API,它给出了该人的城市。我想将这个城市传递给可以显示和更改该城市的客户端组件。实现这一目标的最佳方法是什么?在 React 中,我们可以使用 redux,但由于这是 next.js 13 服务器组件,不知道如何操作。

应用程序/page.tsx

const Page = async () => {
  const city = await getCity();

  const hotels = await getHotelsByCity({
    city: city,
  });

  return (
    <div className="pt-24 md:pt-28 flex md:flex-row md:flex-wrap flex-col">
      {hotels &&
        hotels.map((hotel) => {
          <div>{hotel}</div>;
        })}
    </div>
  );
};

export default Page;
Run Code Online (Sandbox Code Playgroud)

应用程序/组件/导航栏/Location.tsx

"use client";

import useSelectLocationModal from "@/app/hooks/useSelectLocationModal";

export default function Location() {
  const selectLocationModal = useSelectLocationModal();

  return (
    <div
      className="flex items-center cursor-pointer"
      onClick={() …
Run Code Online (Sandbox Code Playgroud)

state-management reactjs app-router next.js next.js13

13
推荐指数
1
解决办法
9968
查看次数

关于Ember.js中StateManager的最佳实践

StateManager在Ember.js不说,有据可查的,所以我已经得到了有关其使用的一些问题.

  1. 是否应该.goToState只从国家经理内部打电话?
  2. 我有时会发现自己在视图中的状态管理器中镜像方法,例如save: -> StateManager.send("save").这有意义还是我错过了什么?
  3. 模型的所有修改(通常)是否应该通过州经理?
  4. 如果一个视图具有不同的状态,是应该使用ViewState带子状态建模,还是应该使用计算属性和视图属性仅在视图中保存该信息(没有状态管理器知道视图内部状态)?*

*一个示例可以是三步形式,其中相同的模板用于所有状态,但是在三个步骤中显示/隐藏不同的区域.

Github参考:https://github.com/emberjs/ember.js/tree/master/packages/ember-states/lib

javascript viewstate model-view-controller state-management ember.js

12
推荐指数
2
解决办法
2534
查看次数

什么是角度的国家管理?我为什么要用呢?

我是Angular的新手,这个问题可能非常广泛.但我有兴趣了解有关国家管理使用情况的更多信息.最近我们的一个项目使用NGXS库实现了状态管理.但是,我试图了解它为应用带来的所有优势是什么?

实现非常深入,在高层次上,有一些操作将应用程序数据(由用户设置)和侦听器传递给那些处理请求并根据需要调度到下一步骤的操作.从一般的角度应用来看,这在应用程序使用或性能等方面有何不同.我正处于理解状态管理的初级阶段,所以我觉得我写的代码太多了,可能并不是真正需要的.示例 - 只是为了路由到另一个页面,我必须实现一个状态模式来保存对象并声明一个动作和一个监听器来实现该动作.

我正在阅读几份文件并获得有关如何实施国家管理的详细信息,但没有得到正确解决为什么要实施州管理的答案.

先感谢您!

state-management typescript angular6 ngxs

12
推荐指数
1
解决办法
2700
查看次数