React和Redux不呈现视图

时间:2016-11-16 11:10:49

标签: javascript reactjs react-redux

所以我正在React + Redux中开发一个小型的簿记应用程序。但是,出于某种原因,观点不会呈现,我也不知道为什么。代码也不会引发错误。

这是我的应用程序的结构。

src
----actions
----components
             ----App.js
----containers
             ----bookList.js
----reducers
             ----book.js
             ----index.js
--index.js

以下是单个文件

index.js / SRC

import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App.js';
import {Provider} from 'react-redux';
import {createStore} from 'redux';
import rootReducer from './reducers/index.js';

let store = createStore(rootReducer);


ReactDOM.render(
    <Provider store={store}>
        <App />
    </Provider>, 
    document.getElementById('root')
);

/components/App.js

import React from 'react';
import bookList from '../containers/bookList.js';

const App = () => {
  return (
    <div>
      <bookList />
    </div>
  )
}

export default App;

/containers/bookList.js

import React, {Component} from 'react';
import {connect} from 'react-redux';

class bookList extends Component {
    renderList() {
        return this.props.books.map(book => {
            return <li key={book.title}>{book.title}</li>
        });
    }

    render() {
        return (
            <ul className='list-group col-sm-4'>
                {this.renderList()}
            </ul>
        )
    }
}

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

export default connect(mapStateToProps)(bookList);

/reducers/index.js

import {combineReducers} from 'redux';
import books from './books.js';

const rootReducer = combineReducers({
    books: books
});

export default rootReducer;

/reducers/book.js

const books = () => {
    return [
        {title: 'JavaScript'}, 
        {title: 'Harry Potter'}, 
        {title: 'Some Random Title'}
    ]
}

export default books;

就像我在开头提到的那样,绝对没有错误被抛出,我试图在bookList.js文件中执行的任何console.log语句都不会显示出来。

就像Babel编译器没有读取该文件一样。

然而,当我记录bookList函数时,我从bookList.js导入到App.js中,它打印出一个connect函数。因此,该文件显然正在导入。

2 个答案:

答案 0 :(得分:2)

你可以查看:User-Defined Components Must Be Capitalized

如果链接无效:

  

当元素类型以小写字母开头时,它引用内置组件,如或,并导致字符串'div''span'传递给React.createElement。以大写字母开头的类型,如编译为React.createElement(Foo),对应于在JavaScript文件中定义或导入的组件   我们建议使用大写字母命名组件。如果你有一个以小写字母开头的组件,在将它用于JSX之前将其分配给大写变量。

答案 1 :(得分:0)

好的,我有一个答案给你们,我认为这绝对会像我一样打击你的思绪。

所以得到这个,显然我需要做的就是在App.js文件和bookList.js文件的任何单词中将'bookList'更改为'BookList'。

我不知道它为什么会这样。如果有人可以解释一下,我会非常感激。因为这是我第一次遇到代码失败,因为命名语法不同。