标签: state-management

将所有数据存储在vuex或redux中好吗?

将数据保存在存储中是否会降低性能?例如我们在vue中有一个应用程序,我通过api从服务器获取客户数据。并将其存储在 vuex 中,我可以设置一些过滤器来获取过滤后的数据。这是我的 vuex 的状态。

export const state = () => ({
    allCustomers: [],
    hasError: false,
    loading: false,
    searchForm: {
        name: "",
        nationalCode: "",
        mobile: ""
    },
    filterForm: {
        minAge: "",
        maxAge: "",
        minVisit: "",
        maxVisit: "",
        gender: ""
    },
    tagForm: {
        visitTag: "",
        serviceTag: ""
    }
});
Run Code Online (Sandbox Code Playgroud)

我获取数据的请求代码位于操作部分:

export const actions = {
    async getCustomer({ commit, state }, API) {
        commit(`${ActionsTypes.CHANGE_HAS_ERROR}`, false);
        commit(`${ActionsTypes.CHANGE_LOADING}`, true);
        commit(`${ActionsTypes.CLEAR_ARRAY}`);
        try {
            const {
                data: { data }
            } = await API.get("api/admin/customer", {
                params: …
Run Code Online (Sandbox Code Playgroud)

state-management vue.js redux vuex

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

当子小部件更改 Flutter 时,更改父变量并重建父小部件

我有一个屏幕小部件和一个自定义小部件。我想在按下自定义小部件的按钮时更改屏幕小部件的值。只是为了展示一个例子;

这是 MyScreen 小部件,它使用 CustomWidget 作为子项:

import './widgets/my_custom_widget.dart';
class MyScreen extends StatefulWidget {

  @override
  _MyScreen createState() => _MyScreenState();
}

class _MyScreen extends State<MyScreen> {
 bool isChildButtonPressed = false;
  @override
  Widget build(BuildContext context) {
    return Container(
         child:MyCustomWidget());
    }
}
Run Code Online (Sandbox Code Playgroud)

这是 MyCustomWidget

class MyCustomWidget extends StatefulWidget {

  @override
  _MyCustomWidget createState() => _MyCustomWidget();
}

class _MyCustomWidget extends State<MyCustomWidget> {
  @override
  Widget build(BuildContext context) {
    return Container(
        width:200,
        height:200,
         child: Row(children:[
                  FlatButton(child:Text("I am child button"),onPressed:(){
                     //what should I do here to change MyScreen isChildButtonPressed …
Run Code Online (Sandbox Code Playgroud)

state-management dart flutter

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

状态管理和全局变量

我正在自学 Flutter,之前学过传统的面向对象语言。我仍然是一个初学者,但很明显状态管理是 Flutter 中的一个关键问题,所以我正在学习它(主要是通过 Providers)。

我正在学习的大部分内容似乎都使用全局变量,从其他类设置和调用(notifyListener()在后一种情况下进行调用)。但当我了解 OOP 时,我被告知这是一件“坏”事情。一个对象可能会无意中更改变量的值,从而破坏另一个对象。换句话说,封装是好的,全局变量是坏的——它们违反了封装的思想。

我缺少什么?

global-variables state-management dart flutter

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

Apollo Client 3.0 还是 Redux 用于本地状态管理?

我正在使用 Apollo Client 3.0 从 graphql 服务器获取数据,但我无法决定使用什么进行本地状态管理(Redux 或 Apollo Client 3.0)。

我认为 Redux 迫使我编写更多代码,但以可预测且更清晰的方式编写,这很好。另外,将 Redux 添加到应用程序意味着我将混合使用 2 个状态管理库。

Apollo Client 3.0有Reactive Variables,但是对于大型应用程序我认为它会变得一团糟!我还可以使用 @client 指令进行查询和突变,但这可能有点令人困惑。

你给我推荐什么?我应该用什么?你能给我提供一些好的例子吗?

谢谢!

state-management reactjs redux react-apollo apollo-client

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

状态存储在 Fluxor 中的哪里?

我是与状态管理人员合作的新手。目前,我正在开发 blazor 应用程序,我偶然发现了“fluxor”框架,它允许通过 Flux 模式进行状态管理。Fluxor 对我来说工作得很好,但是我似乎无法弄清楚页面状态的实际存储位置。它是在缓存、数据库还是其他一些奇特的方式中?有没有办法让我看到浏览器中存储的数据?

顺便说一下,我在应用程序的客户端使用 Fluxor。

谢谢你的协助!

c# state-management flux blazor fluxor

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

(Codesandbox,Vue)“属性或方法“children”未在实例上定义,但在渲染期间引用。”

我目前正在构建一个状态管理器,它可以集成到多个前端框架中,包括 Vue。为了演示 Vue 中状态管理器的用法,我创建了一个简单的codesandbox。因为有一个实时代码示例总是很好,可以在自述文件中进行推广。但不知何故,我总是在代码和框中收到此错误(见下文)。

[Vue warn]: Property or method "children" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.
Run Code Online (Sandbox Code Playgroud)

上述错误发生在显示editor + preview. 在本地或在单独的选项卡(仅显示 )中,preview它按预期工作(没有错误)。

Codesandbox(错误):
https://codesandbox.io/s/agilets-first-state-i5xxs ?file=/src/main.js

Codesandbox 单独点击预览(无错误):
https://i5xxs.csb.app/

本地项目(无错误):
https://github.com/agile-ts/agile/tree/master/examples/vue/develop/my-project

我不知道我做错了什么。但这与我的状态管理器有关,因为默认的vue Codesandbox工作正常。

javascript state-management vue.js vuejs2 codesandbox

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

flutter Getx 中无法将“String”类型的值分配给“RxString”类型的变量

我试图在 Getx 控制器中将图像转换为 Base64 文本,但显示错误“无法将‘String’类型的值分配给‘RxString’类型的变量”。

base64 state-management image-conversion flutter flutter-getx

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

如何批量限制事件?

如何批量限制事件?比方说,我想在用户输入时触发文件保存,但执行文件系统访问的频率不超过每 100 毫秒一次?

块事件处理程序示例:

on<StoreFile>(_handleStoreEvent);
Run Code Online (Sandbox Code Playgroud)

state-management reactive-programming dart flutter bloc

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

如何正确使用flutter Riverpod在不同文件的widget之间共享数据?

当小部件位于同一文件中时,我能够在小部件之间共享数据,但是当小部件位于不同文件中时,用户界面不会重建,而且我似乎没有得到正确的结果。

请检查下面的代码,看看我的不足之处。(我添加了图像以便于阅读和文本代码以便于 CTRL C - CTRL V)

客观的

我正在尝试在不同文件中的多个小部件之间共享数据图片在这里

但它不会通知其他小部件/重建当点击第 45 行的按钮时,第 44 行的文本成功更改,但第 26 行的屏幕没有更改

//-------------navigation_provider.dart----------------//

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class NavigationProvider extends ChangeNotifier{

bool showUserProfile = true;
  
void toggleProfile(toggle){
showUserProfile = toggle;
notifyListeners();
}
}
Run Code Online (Sandbox Code Playgroud)

//--------------desktop_scaffold.dart----------------//

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:premiumpeaches/providers/navigation_provider.dart';
import 'package:flutter/material.dart';

final navigatorProvider = ChangeNotifierProvider((ref) => NavigationProvider());
class DesktopScaffold extends ConsumerWidget {
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    return SizedBox(
      child: ref.watch(navigatorProvider).showUserProfile == true ? UserProfileComponent() : ProfileSettingsComponent()
    )
  
}
Run Code Online (Sandbox Code Playgroud)

//--------------user_profile_component.dart----------------// …

state-management dart flutter riverpod flutter-riverpod

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

ASP.NET服务器如何知道会话何时终止?

我知道Session对象用于存储每个会话的数据.我做了以下实验:

  1. 打开浏览器并访问aspx页面A,它将一些数据保存到Session对象.
  2. 保持浏览器打开并打开另一个选项卡以访问显示会话数据的aspx页面B. 它就像我在步骤1中存储一样显示.
  3. 我关闭浏览器并重新访问页面B,存储的数据消失了.

从3开始,似乎服务器端以某种方式检测到我(客户端)已终止会话.但是当我与Fiddler核实时,当我在步骤3中关闭浏览器时,没有任何位发送到服务器.

那么ASP.NET应用程序怎么可能知道我的第3步请求是针对新的会话?

会话是如何定义的?不同的标签总是属于同一个会话吗?

添加1

虽然会话数据可以显示在页面A和页面B中,但是它们中显示的会话ID是不同的.为什么?

正确

页面A和页面B中的会话ID相同.我没有使用InPrivate浏览.

添加2

会话ID确实有一个Cookie:

ASP.NET_SessionId=lmswljirqdjxdfq3mvmbwroy; path=/; domain=localhost; HttpOnly
Run Code Online (Sandbox Code Playgroud)

它是在响应POST请求时设置的.

所以我做了另一个实验,我关闭了浏览器(Fire Fox),正如预期的那样,Cookie不再存在.我手动创建cookie,希望" 伪造的Cookie可以带回旧会话. "但Fiddler表示手动cookie根本没有发送.

提琴手说:

This request did not send any cookie data.
Run Code Online (Sandbox Code Playgroud)

那么伪造一个cookie并恢复以前的会话是可能的吗?

会话在服务器上存在多长时间?

asp.net session state-management

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