【问题标题】:Cannot resolve store in container (React, Redux)无法解析容器中的存储(React、Redux)
【发布时间】:2018-02-28 14:50:07
【问题描述】:

一开始,我想表明我是 JS 和 React 的业余爱好者。我面临一个问题,即使用 React-Router 显示的容器未接收存储。我不知道问题是什么。我用Provider 包装了根组件,我的应用程序一直显示这样的错误:

这是我的Application component的sn-p:

const rootReducer = combineReducers({
    adress: require('./StudiosListRedux').reducer
})

const store = createStore(rootReducer)

const App = ({store}) => (
  <Provider store={store} >
    <BrowserRouter history={history}>
      <Switch>
        <Route exact path='/' component={WelcomeScreen} />
        <Route path='/main' component={StudiosList} />
      </Switch>
    </BrowserRouter>
  </Provider>
)

这是我的WelcomeScreen container

export class WelcomeScreen extends Component {
    state = {
        city: '',
        street: '',
        number: '',
        withDrive: false
    }

    handleCityChange = (text) => {
        console.log('city', text)
        this.setState({
            city: text
        })
    }

    handleStreetChange = (text) => {
        console.log('street', text)
        this.setState({
            street: text
        })
    }

    handleNumberChange = (text) => {
        console.log('number', text)
        this.setState({
            number: text
        })
    }

    handleCheckBoxClick = () => {
        console.log('checkbox', 'pushed')
        this.setState({
            withDrive: !this.state.withDrive
        })
    }

    handleSearchClick = () => {
        const { city, street, number, withDrive } = this.state
        this.props.fetchStudios('query')
    }

    render () {
        const { city, street, number, withDrive } = this.state
        return (
            <Container>
                <SearchComponent
                    withDrive={withDrive}
                    streetValue={street}
                    cityValue={city}
                    numberValue={number}
                    onStreetChange={this.handleStreetChange}
                    onCityChange={this.handleCityChange}
                    onNumberChange={this.handleNumberChange}
                    onCheckBoxClick={this.handleCheckBoxClick}
                    onSubmitClick={this.handleSearchClick}
                />
            </Container>
        )
    }
}

export const mapStateToProps = state => {
    destination: state.adders.toJS()
}

const mapDispatchToProps = {
    fetchStudios: StudiosActions.studiosRequest
}

export default connect(mapStateToProps, mapDispatchToProps)(WelcomeScreen)

谁能帮我解决我的问题?我应该怎么做才能为我的容器提供存储?

【问题讨论】:

    标签: javascript reactjs redux react-router


    【解决方案1】:
    ReactDOM.render(<App store={store} />, document.getElementById("root"))
    

    您似乎忘记将商店传递给应用程序。我可能是错的,除此之外可能还有其他原因,

    【讨论】:

    • 我正在传递它 -> 我已经更新了我的问题,所以你可以看到我是如何创建它的
    • 您没有将其传递给 App 。 store 值在 APP 组件中更新为 undefined。导入你正在做 reactdom.render 的商店,我已经回答了
    • 好吧,你可能是对的。一旦我可以访问计算机,我会检查它。谢谢
    【解决方案2】:

    如果App 是您的根组件,它没有props,则在这里您正在尝试访问undefined store 属性,并且您将覆盖您之前所做的const 声明。

    只需删除 { store } 属性声明:

    const store = createStore(rootReducer)
    
    const App = () => (
      <Provider store={store} >
        <BrowserRouter history={history}>
          <Switch>
            <Route exact path='/' component={WelcomeScreen} />
            <Route path='/main' component={StudiosList} />
          </Switch>
        </BrowserRouter>
      </Provider>
    )
    

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 2019-11-19
      • 1970-01-01
      • 2021-11-03
      • 2017-06-06
      • 2017-12-19
      • 2020-11-05
      • 2020-11-23
      • 2021-11-23
      相关资源
      最近更新 更多