reactjs - 使用 enzyme 设置 redux 连接的 react 组件的状态

import configureMockStore from 'redux-mock-store';
import NavBar from '../components/NavBar/NavBar';

const mockStore = configureMockStore(middlewares);
const store = mockStore(initialState);

wrapper = mount(
    <BrowserRouter> 
        <Provider store={store}>
            <NavBar {...props} />
        </Provider>
    </BrowserRouter> 
);

如何更新包装器中存在的 NavBar 组件的状态?

我尝试使用 wrapper.setState({displayMenu:true}) 进行更新,但它没有更新,因为我认为 wrapper 是组件与 Provider 的包装,所以 NavBar 的状态没有更新。

最佳答案

要解决这个问题,可以这样写:

import ConnectedNavBar, { NavBar } from '../components/NavBar/NavBar';

const wrapper = mount(
    <Provider store={store}>
        <ConnectedNavBar/>
    </Provider>
);

const navBarInstance = result.find(NavBar).instance() as NavBar;
navBarInstance.setState({displayMenu:true});

获取redax组件的信息

navBarInstance.props
navBarInstance.state

注意! 注意组件是如何导入的

import ConnectedNavBar, { NavBar } from '../components/NavBar/NavBar';

并且redax组件导出如下:

export class NavBar extends Component<Props, State>{} 
/*...*/
export default connect<StateProps>(mapStateToProps)(NavBar);

我希望这能解决你的问题

https://stackoverflow.com/questions/62508808/

相关文章:

heroku - 在 heroku 部署期间无法 cd 进入文件夹

.net - PubSub 上的 Http 400 推送到云运行

c# - 使用 MVC 从数据主体调用 post API

android - React Native & Socket.io - 无法在应用程序和服务器之间

visual-studio-code - VS Code 中的 Prettier 不断突破界限

python - vscode 中的调试测试在容器内失败

reactjs - 具有类型支持的可重用 api Hook

php - 模拟 Laravel 缓存助手

mysql - 使用python中的线程在Mysql上同时运行多个查询

apache-kafka - 为什么 KSQL 查询从流-流连接创建的流中返回空值?