所以问题是是否有可能将 React 应用程序拆分为托管在两个不同主机上的两个不同的独立应用程序,其中应用程序 A 是一种未来控制应用程序 B 和 C 的框架。我有一个问题,我想为两个应用程序(A 应用程序)创建一个共同的基础,然后加载另外两个作为它的内容。就好像我懒惰地加载了从不同地方获取的包。我在考虑三种主要的可能性:
我不确定是否有可能,因为 React Router 仍然可能存在问题 - 内部应用程序是否有权操作浏览器路由?
是否存在Asp.net Core的Keycloak客户端?我找到了.net的NuGet包,但它不适用于Core.您是否有任何想法如何轻松地与此安全服务器集成(或可能使用任何其他替代方案)?
每次我从另一个组件发出消息时,都无法获得消息的完整列表。这是钩子和视图组件:
export function useChat() {
const [messages, setMessages] = useState([]);
useEffect(() => {
const socket = openSocket("http://localhost:3003");
socket.on("chat message", msg => {
const newState = update(messages, { $push: [msg] });
setMessages(newState);
});
}, []);
return { messages };
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,状态不会持久,并且总是显示最后一条消息:
export const HookSockets = () => {
const { messages } = useChat();
return (
<div>
{messages.map((message, index) => (
<div key={index}>{message}</div>
))}
</div>
);
};
Run Code Online (Sandbox Code Playgroud)
如果我按常规方式进行操作,那么一切都会按预期进行:
export class ClassSockets extends Component {
state = {
socket: openSocket("http://localhost:3003"),
messages: [], …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用该应用程序对用户活动进行一些研究.我找到了一种方法来制作一个特殊的日志模块(与PRISM结合),它将使用EventManager.RegisterClassHandler静态方法.
我的问题是 - 你如何区分打字文字和按快捷键?在美国它有点容易,因为Ctrl +(任何字母)都没有给你任何字母表的"扩展".因此,只检查按下Ctrl是否无效.可能是一个计时器或DateTime记录按键事件的时间?
也许我应该订阅TextBox.TextInput并忽略KeyDown中的键,如果这个事件被引发?
基于在GitHub 上发布的实现,我制作了自己的UserStore和RoleStore,它们不使用实体框架(在附加到真实数据库之前,我目前只需要内存中的一个简单用户列表)。为了能够做到这一点,我不得不更改注册。我已经编写了自己的IdentityEntityFrameworkBuilderExtensions,没有 DbContext 和 TryAddSingleton 而不是 TryAddScoped,所以一旦初始化用户列表可以持续整个应用程序生命周期。问题是,Dispose 方法被调用了这么多次……我没有处理任何东西,但是调用的次数太多了。是不是因为我做了UserStore和RoleStore 单例,即使其他一切都按照它们的范围工作?
第二件事是,完成工作UserStore所需的最低限度是什么?
danludwig写道:你只需要IUserStore和IUserPasswordStore,这是非常有可能的,因为我做了一个店实现这两个接口和一个Rolestore的与IRoleStore并seemd工作。由于在启动类中的一部分,我也做了RoleStoreservices.AddIdentity<ApplicationUser, IdentityRole>()。我为ASP.NET Core Web 应用程序使用了实体框架授权模板(带有个人用户帐户)。
Arve Systad 和 Anderson Matos写道,你需要这 8 个:
IUserStore<TUser>IUserPasswordStore<TUser>IUserTwoFactorStore<TUser>IUserClaimStore<TUser>IRoleStore<TRole>IUserSecurityStampStore<TUser, string>IUserRoleStore<TUser, string>UserManager<TUser>删除所有实体框架包后,我了解到它只提供了实现的UserStore和RoleStore(基于来自 GitHub 的源代码):
我试图通过Nest 5.5.0设置"not_analyzed"索引类型,我不知道该怎么做.
我的初学者:
var map = new CreateIndexDescriptor(INDEX_NAME)
.Mappings(ms => ms.Map<Project>(m => m.AutoMap()));
var connectionSettings = new ConnectionSettings().DefaultIndex(INDEX_NAME);
_client = new ElasticClient(connectionSettings);
_client.Index(map);
Run Code Online (Sandbox Code Playgroud)
而Project类:
[ElasticsearchType(Name = "project")]
public class Project
{
public Guid Id { get; set; }
[Text(Analyzer = "not_analyzed")]
public string OwnerIdCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在通过Postman调用索引/ _mapping REST之后,这种init方式会创建某种奇怪的映射.有正常的"映射"JSON部分,就在"createindexdescriptor"下面,几乎有相同的数据.
"examinations4": {
"mappings": {
"project": {
(...)
},
"createindexdescriptor": {
"properties": {
"mappings": {
"properties": {
"project": {
"properties": {
"properties": {
"properties": {
"id": {
"properties": { …Run Code Online (Sandbox Code Playgroud) 我使用版本 3.1.2(2019 年 9 月 19 日)中的 Create React App 创建了我的 React 应用程序。我试图为 Web Socket 请求配置代理,但似乎当我使用代理时,没有建立连接。我用这个例子来设置我的东西。该服务器是示例中的 Asp.Net Core,只要将地址连接到初始化中,它就可以工作。这个片段有效:
const hubConnection = new HubConnectionBuilder()
.withUrl("https://localhost:44392/chatHub")
.build();
Run Code Online (Sandbox Code Playgroud)
而这不会:
const hubConnection = new HubConnectionBuilder()
.withUrl("chatHub")
.build();
Run Code Online (Sandbox Code Playgroud)
有了这个:
{
"proxy": "https://localhost:44392/",
"name": "my-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@microsoft/signalr": "^3.0.0",
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-scripts": "3.1.2"
},
(...)
Run Code Online (Sandbox Code Playgroud)
我在这里看到一个建议,我可能会在代理设置中使用一个对象,但是当我尝试时,我收到一个错误,即代理地址必须是单个字符串,而不是一个对象:
proxy: {
'^/api': {
target: '<url>',
ws: true,
changeOrigin: true
},
'^/foo': {
target: '<other_url>'
}
Run Code Online (Sandbox Code Playgroud) 按照官方国际化教程的提示,我The getter was called on null在尝试使用从 ARB 文件自动生成的翻译引擎 ( AppLocalizations.of(context).helloWrold) 时得到了:
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
class Login extends StatelessWidget {
final loginAction;
final String loginError;
const Login(this.loginAction, this.loginError);
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
onPressed: () {
loginAction();
},
child: Text(AppLocalizations.of(context).helloWorld),
),
Text(loginError ?? ''),
],
);
}
}
Run Code Online (Sandbox Code Playgroud) reactjs ×3
.net ×2
asp.net ×2
asp.net-core ×2
c# ×2
websocket ×2
.net-core ×1
asp.net-mvc ×1
dart ×1
flutter ×1
immutability ×1
keycloak ×1
keylogger ×1
lazy-loading ×1
localization ×1
mapping ×1
nest ×1
react-hooks ×1
react-router ×1
signalr ×1
socket.io ×1
usability ×1
webpack ×1