Javascript 对道具的Redux连接状态作出反应

Javascript 对道具的Redux连接状态作出反应,javascript,reactjs,redux,Javascript,Reactjs,Redux,我正在尝试为react应用程序设置应用商店,我无法将应用商店连接到组件。我看了官方的例子,但看不出哪里出了错 无法读取未定义的属性“app” 在app.js中,它说状态是未定义的,我的理解是提供者将此传递下去。我不确定我是否忽略了一些简单的事情,但我现在很困惑 编辑:我现在已经添加了所有涉及的文件 root.js import React, { Component } from 'react'; import { Provider } from 'react-redux'; import con

我正在尝试为react应用程序设置应用商店,我无法将应用商店连接到组件。我看了官方的例子,但看不出哪里出了错

无法读取未定义的属性“app”

app.js
中,它说
状态
是未定义的,我的理解是
提供者
将此传递下去。我不确定我是否忽略了一些简单的事情,但我现在很困惑

编辑:我现在已经添加了所有涉及的文件

root.js

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

const store = configureStore();

export default class Root extends Component {
  render() {
    return(
      <Provider store={store}>
        <App />
      </Provider>
    )
  }
}
import React, { Component, PropTypes } from 'react';
import {render} from 'react-dom';
import { connect } from 'react-redux';
import { fetchFixtures } from '../actions';

const mapStateToProps = (state) => {
  return {
    fixtures: state.app.fixtures
  }
}

class App extends Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    const { dispatch, selectedSubreddit } = this.props;
  }

  render() {
    return(
      <div></div>
    )
  }
}

export default connect(mapStateToProps)(App);
import {createStore} from 'redux';
import Reducer from './reducers';

let initialState = {
  app: {
    teams: [],
    fixtures: [],
    manifesto: []
  }
}

export default function configureStore(initialState) {
  return createStore(
    Reducer,
    initialState
  )
}
export function fetchFixtures(url) {
  return fetch(url)
    .then(res => res.json())
    .then(json => dispatch(recieveFixtures(json)))
    .catch((err) => {
      console.log(err);
    });
}

function recieveFixtures(json) {
  return {
    type: ADD_FIXTURES,
    fixtures: json.fixtures.map(fixture => fixture)
  }
}
function euroSweep(state, action) {
  switch (action.type) {
    case 'ADD_FIXTURES':
      let newState = Object.assign({}, state);
      return newState;
    default:
      return state;
  }
}

export default euroSweep;
import React, {Component} from 'react';
import {render} from 'react-dom';
import Root from './containers/root';

render(
  <Root />, document.querySelector('.app')
)
configureStore.js

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

const store = configureStore();

export default class Root extends Component {
  render() {
    return(
      <Provider store={store}>
        <App />
      </Provider>
    )
  }
}
import React, { Component, PropTypes } from 'react';
import {render} from 'react-dom';
import { connect } from 'react-redux';
import { fetchFixtures } from '../actions';

const mapStateToProps = (state) => {
  return {
    fixtures: state.app.fixtures
  }
}

class App extends Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    const { dispatch, selectedSubreddit } = this.props;
  }

  render() {
    return(
      <div></div>
    )
  }
}

export default connect(mapStateToProps)(App);
import {createStore} from 'redux';
import Reducer from './reducers';

let initialState = {
  app: {
    teams: [],
    fixtures: [],
    manifesto: []
  }
}

export default function configureStore(initialState) {
  return createStore(
    Reducer,
    initialState
  )
}
export function fetchFixtures(url) {
  return fetch(url)
    .then(res => res.json())
    .then(json => dispatch(recieveFixtures(json)))
    .catch((err) => {
      console.log(err);
    });
}

function recieveFixtures(json) {
  return {
    type: ADD_FIXTURES,
    fixtures: json.fixtures.map(fixture => fixture)
  }
}
function euroSweep(state, action) {
  switch (action.type) {
    case 'ADD_FIXTURES':
      let newState = Object.assign({}, state);
      return newState;
    default:
      return state;
  }
}

export default euroSweep;
import React, {Component} from 'react';
import {render} from 'react-dom';
import Root from './containers/root';

render(
  <Root />, document.querySelector('.app')
)
actions.js

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

const store = configureStore();

export default class Root extends Component {
  render() {
    return(
      <Provider store={store}>
        <App />
      </Provider>
    )
  }
}
import React, { Component, PropTypes } from 'react';
import {render} from 'react-dom';
import { connect } from 'react-redux';
import { fetchFixtures } from '../actions';

const mapStateToProps = (state) => {
  return {
    fixtures: state.app.fixtures
  }
}

class App extends Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    const { dispatch, selectedSubreddit } = this.props;
  }

  render() {
    return(
      <div></div>
    )
  }
}

export default connect(mapStateToProps)(App);
import {createStore} from 'redux';
import Reducer from './reducers';

let initialState = {
  app: {
    teams: [],
    fixtures: [],
    manifesto: []
  }
}

export default function configureStore(initialState) {
  return createStore(
    Reducer,
    initialState
  )
}
export function fetchFixtures(url) {
  return fetch(url)
    .then(res => res.json())
    .then(json => dispatch(recieveFixtures(json)))
    .catch((err) => {
      console.log(err);
    });
}

function recieveFixtures(json) {
  return {
    type: ADD_FIXTURES,
    fixtures: json.fixtures.map(fixture => fixture)
  }
}
function euroSweep(state, action) {
  switch (action.type) {
    case 'ADD_FIXTURES':
      let newState = Object.assign({}, state);
      return newState;
    default:
      return state;
  }
}

export default euroSweep;
import React, {Component} from 'react';
import {render} from 'react-dom';
import Root from './containers/root';

render(
  <Root />, document.querySelector('.app')
)
reducers.js

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

const store = configureStore();

export default class Root extends Component {
  render() {
    return(
      <Provider store={store}>
        <App />
      </Provider>
    )
  }
}
import React, { Component, PropTypes } from 'react';
import {render} from 'react-dom';
import { connect } from 'react-redux';
import { fetchFixtures } from '../actions';

const mapStateToProps = (state) => {
  return {
    fixtures: state.app.fixtures
  }
}

class App extends Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    const { dispatch, selectedSubreddit } = this.props;
  }

  render() {
    return(
      <div></div>
    )
  }
}

export default connect(mapStateToProps)(App);
import {createStore} from 'redux';
import Reducer from './reducers';

let initialState = {
  app: {
    teams: [],
    fixtures: [],
    manifesto: []
  }
}

export default function configureStore(initialState) {
  return createStore(
    Reducer,
    initialState
  )
}
export function fetchFixtures(url) {
  return fetch(url)
    .then(res => res.json())
    .then(json => dispatch(recieveFixtures(json)))
    .catch((err) => {
      console.log(err);
    });
}

function recieveFixtures(json) {
  return {
    type: ADD_FIXTURES,
    fixtures: json.fixtures.map(fixture => fixture)
  }
}
function euroSweep(state, action) {
  switch (action.type) {
    case 'ADD_FIXTURES':
      let newState = Object.assign({}, state);
      return newState;
    default:
      return state;
  }
}

export default euroSweep;
import React, {Component} from 'react';
import {render} from 'react-dom';
import Root from './containers/root';

render(
  <Root />, document.querySelector('.app')
)
index.js

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

const store = configureStore();

export default class Root extends Component {
  render() {
    return(
      <Provider store={store}>
        <App />
      </Provider>
    )
  }
}
import React, { Component, PropTypes } from 'react';
import {render} from 'react-dom';
import { connect } from 'react-redux';
import { fetchFixtures } from '../actions';

const mapStateToProps = (state) => {
  return {
    fixtures: state.app.fixtures
  }
}

class App extends Component {
  constructor(props) {
    super(props);
  }

  componentDidMount() {
    const { dispatch, selectedSubreddit } = this.props;
  }

  render() {
    return(
      <div></div>
    )
  }
}

export default connect(mapStateToProps)(App);
import {createStore} from 'redux';
import Reducer from './reducers';

let initialState = {
  app: {
    teams: [],
    fixtures: [],
    manifesto: []
  }
}

export default function configureStore(initialState) {
  return createStore(
    Reducer,
    initialState
  )
}
export function fetchFixtures(url) {
  return fetch(url)
    .then(res => res.json())
    .then(json => dispatch(recieveFixtures(json)))
    .catch((err) => {
      console.log(err);
    });
}

function recieveFixtures(json) {
  return {
    type: ADD_FIXTURES,
    fixtures: json.fixtures.map(fixture => fixture)
  }
}
function euroSweep(state, action) {
  switch (action.type) {
    case 'ADD_FIXTURES':
      let newState = Object.assign({}, state);
      return newState;
    default:
      return state;
  }
}

export default euroSweep;
import React, {Component} from 'react';
import {render} from 'react-dom';
import Root from './containers/root';

render(
  <Root />, document.querySelector('.app')
)
import React,{Component}来自'React';
从'react dom'导入{render};
从“./containers/Root”导入根目录;
渲染(
,document.querySelector(“.app”)
)

哪里是
状态
未定义?在
mapstatetops
?@davintroon是,将状态传递给
mapstatetops
时,状态未定义
configureStore
看起来像什么?reducer正在生成的
夹具
?看起来您正在定义一个未考虑的
应用程序
密钥插入状态。尝试:fixtures:
state.app.fixtures
。看不到其他明显错误的内容。您的
初始状态
似乎未定义,因为您正在调用没有参数的
配置存储
。这将覆盖上部范围中的局部变量。指定默认参数或删除
configureStore
的参数。