包装组件-6ren"> 包装组件-不变违规:在“Connect(App)”的上下文或属性中找不到“store”。将根组件包装在 中,或者将“store”作为 prop 显式传递给“Connect(App)”。 我讨厌问一个已经被问过很-6ren">
gpt4 book ai didi

reactjs - 在 "store"的上下文或 props 中找不到 "Connect(App)"。我已经有一个 包装组件

转载 作者:行者123 更新时间:2023-12-03 14:31:28 24 4
gpt4 key购买 nike

不变违规:在“Connect(App)”的上下文或属性中找不到“store”。将根组件包装在 中,或者将“store”作为 prop 显式传递给“Connect(App)”。

我讨厌问一个已经被问过很多次的问题的变体,但我已经尝试了所有建议的解决方案,但没有成功。 https://codesandbox.io/s/0pyl7n315w

index.js

import React, {Component} from 'react'
import {AppRegistry} from 'react-native'
import {Provider} from 'react-redux'
import App from './app'

import configureStore from './store.js'
const store = configureStore();

class MyCounterApp extends Component {
render() {
return(
<Provider store={store}>
<App/>
</Provider>
)
}
}

AppRegistry.registerComponent('MyCounterApp', () => MyCounterApp)

app.js

import React from 'react';
import {Button, Text, View} from 'react-native';
import {addToCounter} from "./actions";
import { connect } from 'react-redux';

class App extends React.Component {

handleOnClick = event => {
this.props.addToCounter()
};

render() {
return (
<View>

<Text>{this.props.count}</Text>

<Button onPress={() => this.props.addToCounter()}
title={"Click Me!"}>
</Button>

</View>
)
}
}

function mapDispatchToProps(dispatch) {
return {
addToCounter: () => dispatch(addToCounter())
}
}

function mapStateToProps(state) {
return {
count: state.count
}
}


export default connect(mapStateToProps, mapDispatchToProps)(App)

store.js

import reducer from './reducer'
import {createStore} from 'redux'

export default function configureStore() {
let store = createStore(
reducer
)
return store
}

reducer .js

import {ADD_TO_COUNTER} from './actions'

const initialState = {
counter: 0
}


const reducer = (state = initialState, action) => {

switch (action.type) {
case ADD_TO_COUNTER:
return {
...state,
counter: state.counter + 1
}
default:
return state
}
}

export default reducer;

我正在按照本教程进行操作: https://medium.com/@pavsidhu/using-redux-with-react-native-9d07381507fe

最佳答案

如果您想在不使用存储的情况下测试组件,您要做的第一件事就是导出断开连接的组件,例如: export { Component }

然后你必须像这样导入你的测试文件:import { Component } from ...

如果错误仍然存​​在,请查看该组件是否使用已连接的组件,如果是,则必须模拟该组件,例如: jest.mock('../../../AnotherComponent', () => ChildComponent => props => <ChildComponent {...props} />);

示例:

const Component = (props: Props) => (
<>
...
<AnotherComponent // connected component inside <Component />
{...props}
/>
</>
)

const mapStateToProps = (state: State) => ({});
const mapDispatchToProps = {

export default connect(
mapStateToProps,
mapDispatchToProps
)(Component);

export { Component }; // disconnected component

关于reactjs - 在 "store"的上下文或 props 中找不到 "Connect(App)"。我已经有一个 <Provider> 包装组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52154797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com