将数据保存在存储中是否会降低性能?例如我们在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) 我有一个屏幕小部件和一个自定义小部件。我想在按下自定义小部件的按钮时更改屏幕小部件的值。只是为了展示一个例子;
这是 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) 我正在自学 Flutter,之前学过传统的面向对象语言。我仍然是一个初学者,但很明显状态管理是 Flutter 中的一个关键问题,所以我正在学习它(主要是通过 Providers)。
我正在学习的大部分内容似乎都使用全局变量,从其他类设置和调用(notifyListener()
在后一种情况下进行调用)。但当我了解 OOP 时,我被告知这是一件“坏”事情。一个对象可能会无意中更改变量的值,从而破坏另一个对象。换句话说,封装是好的,全局变量是坏的——它们违反了封装的思想。
我缺少什么?
我正在使用 Apollo Client 3.0 从 graphql 服务器获取数据,但我无法决定使用什么进行本地状态管理(Redux 或 Apollo Client 3.0)。
我认为 Redux 迫使我编写更多代码,但以可预测且更清晰的方式编写,这很好。另外,将 Redux 添加到应用程序意味着我将混合使用 2 个状态管理库。
Apollo Client 3.0有Reactive Variables,但是对于大型应用程序我认为它会变得一团糟!我还可以使用 @client 指令进行查询和突变,但这可能有点令人困惑。
你给我推荐什么?我应该用什么?你能给我提供一些好的例子吗?
谢谢!
我是与状态管理人员合作的新手。目前,我正在开发 blazor 应用程序,我偶然发现了“fluxor”框架,它允许通过 Flux 模式进行状态管理。Fluxor 对我来说工作得很好,但是我似乎无法弄清楚页面状态的实际存储位置。它是在缓存、数据库还是其他一些奇特的方式中?有没有办法让我看到浏览器中存储的数据?
顺便说一下,我在应用程序的客户端使用 Fluxor。
谢谢你的协助!
我目前正在构建一个状态管理器,它可以集成到多个前端框架中,包括 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工作正常。
我试图在 Getx 控制器中将图像转换为 Base64 文本,但显示错误“无法将‘String’类型的值分配给‘RxString’类型的变量”。
base64 state-management image-conversion flutter flutter-getx
如何批量限制事件?比方说,我想在用户输入时触发文件保存,但执行文件系统访问的频率不超过每 100 毫秒一次?
块事件处理程序示例:
on<StoreFile>(_handleStoreEvent);
Run Code Online (Sandbox Code Playgroud) 当小部件位于同一文件中时,我能够在小部件之间共享数据,但是当小部件位于不同文件中时,用户界面不会重建,而且我似乎没有得到正确的结果。
请检查下面的代码,看看我的不足之处。(我添加了图像以便于阅读和文本代码以便于 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----------------// …
我知道Session对象用于存储每个会话的数据.我做了以下实验:
从3开始,似乎服务器端以某种方式检测到我(客户端)已终止会话.但是当我与Fiddler核实时,当我在步骤3中关闭浏览器时,没有任何位发送到服务器.
那么ASP.NET应用程序怎么可能知道我的第3步请求是针对新的会话?
会话是如何定义的?不同的标签总是属于同一个会话吗?
虽然会话数据可以显示在页面A和页面B中,但是它们中显示的会话ID是不同的.为什么?
页面A和页面B中的会话ID相同.我没有使用InPrivate浏览.
会话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并恢复以前的会话是可能的吗?
会话在服务器上存在多长时间?
state-management ×10
flutter ×5
dart ×4
redux ×2
vue.js ×2
asp.net ×1
base64 ×1
blazor ×1
bloc ×1
c# ×1
codesandbox ×1
flutter-getx ×1
flux ×1
fluxor ×1
javascript ×1
react-apollo ×1
reactjs ×1
riverpod ×1
session ×1
vuejs2 ×1
vuex ×1