For the complete documentation index, see llms.txt. This page is also available as Markdown.

测试与性能

本页涵盖 Redux/RTK Query 应用的测试策略和性能优化技巧。

测试 Redux 切片

基础 Reducer 测试

// user.slice.test.ts
import reducer, { userLoggedIn, userLoggedOut } from './user.slice';

describe('用户切片', () => {
  const initialState = {
    account: null,
    isAuthenticated: false,
  };

  it('应处理 userLoggedIn', () => {
    const account = '0x123...';
    const actual = reducer(initialState, userLoggedIn({ account }));
    
    expect(actual.account).toBe(account);
    expect(actual.isAuthenticated).toBe(true);
  });

  it('应处理 userLoggedOut', () => {
    const loggedInState = {
      account: '0x123...',
      isAuthenticated: true,
    };
    
    const actual = reducer(loggedInState, userLoggedOut());
    
    expect(actual.account).toBeNull();
    expect(actual.isAuthenticated).toBe(false);
  });
});

测试实体适配器

测试选择器

简单选择器

记忆化选择器

使用 MSW 测试 RTK Query

设置 MSW

测试查询

测试 Mutation

测试乐观更新

性能优化

将 selectFromResult 以防止重新渲染

避免选择整个状态

记忆化昂贵的选择器

对规范化数据使用实体适配器

调整 RTK Query 缓存设置

预取以获得更好的用户体验

轮询策略

Redux 开发者工具

在开发环境中启用

动作净化器

在 DevTools 中净化敏感数据:

最佳实践清单

性能

测试

代码质量

要避免的反模式

监控性能

跟踪选择器调用

监控重新渲染

下一步

最后更新于