我的React应用程序正在捕获错误并正确显示我的自定义错误消息,但一秒钟后它仍然显示原始错误记录.因此,后备UI然后被初始错误屏幕取代.
测试组件:
import React, { Component } from 'react';
export class Test extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<ErrorBoundary>
<Error></Error>
</ErrorBoundary>);
}
}
Run Code Online (Sandbox Code Playgroud)
错误组件:
import React, { Component } from 'react';
export class Error extends React.Component {
constructor(props) {
super(props);
}
render() {
return ({ test });
}
}
Run Code Online (Sandbox Code Playgroud)
在错误组件测试中未定义,因此将抛出未定义的错误.
ErrorBoundary:
import React, { Component } from 'react';
export class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { error: null, errorInfo: null }; …
Run Code Online (Sandbox Code Playgroud) 在为我的ASP.NET项目实现存储库模式时,我遇到了一些我无法理解的问题.所以我对如何以正确的方式实现存储库模式有几个问题.
根据我的经验,我认为只有在我的应用程序中,没有行为的类/模型,在他们的存储库旁边并不是很好的OOP.但是,这是我实现存储库模式的方式.我只是到处都需要一个存储库实例,来执行一些操作.这种方法的结果是我的所有域类都没有行为.
它们只是没有方法的数据对象.我的老师告诉我,我正在使用薄模型,我应该努力制作胖模型.为了回应这些反馈,我在类中实现了一些业务逻辑,但是我遇到了一些问题:
场景:
我的User
班级中有一个包含用户对象的朋友列表,代表某个用户的朋友.向用户添加新朋友时,域类方法会检查朋友列表中是否已存在"朋友".如果没有,他将被添加到列表中.需要将这些更改发送到数据库以实现持久性.
我知道这必须在每个域类的存储库中完成,但是对存储库方法的调用在哪里属于应用程序的体系结构?
现在我调用域类方法本身的存储库方法,以保持对数据库的更改:
public void AddFriend(User friend)
{
foreach(User f in Friends)
{
if(f.Username == friend.Username)
{
throw new Exception(String.Format("{0} is already a friend.", friend.Username));
}
}
Friends.Add(friend);
userRepo.AddFriend(this.Id, friend.Id);
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的方法,因为某些原因我认为不是.关于单元测试,我们需要使用这种方法进行一些依赖注入,它告诉我它不是一个独立的类(良好的可测试单元).我读过一些人说他们使用额外的服务层或其他东西的帖子.我认为这里需要这种抽象,但某个服务层是怎样的?它是什么,哪些方法等?
我见过其他一些学生在域类中使用静态方法,它提供了添加新对象,更新对象,删除对象和获取所有对象等功能.
例:
public class Tram
{
private static TramRepository Repo = new TramRepository(new DBTram());
public static void AddTram(int tramID, TramType type, int lineNr)
{
Tram tram = new Tram(tramID, type, TramStatus.depot, lineNr, true, null);
Repo.AddTram(tram);
}
public static List<Tram> GetAll()
{
Repo.GetAll(); …
Run Code Online (Sandbox Code Playgroud)