2016-10-03 7 views
1

Мой компонент не рендеринга, и я не получаю никаких ошибок. Я застрял в этой ошибке в течение нескольких часов, поэтому я ищу любой совет!Компонент React/Redux не будет отображаться

Я пытаюсь получить данные для отображения при загрузке страниц с использованием componentWillMount() и ничего в настоящее время не отображается. Прежде чем я смог отобразить простые строки с компонентом. Теперь я не получаю никаких консольных журналов от компонентов, а не от текста, ничего ... мой api работает, но я не получаю http-звонки в хром-консоли. Ниже приведены мои файлы.

indexTimesheet.js (компонент)

import React, {Component, PropTypes} from 'react'; 
import {connect} from 'react-redux'; 
import getTimesheet from '../actions/getTime'; 

class IndexTimesheet extends Component { 
    componentWillMount() { 
    console.log("test"); 
    this.props.getTimesheet(); 
    } 

    render() { 
    return (
     <h3>Index Timesheet</h3> 
    ); 
    } 
} 

IndexTimesheet.propTypes = { 
    getTimesheet: PropTypes.func 
}; 

export default connect(null, {getTimesheet})(IndexTimesheet); 

index.js

import React from 'react'; 
import ReactDOM from 'react-dom'; 
import {Provider} from 'react-redux'; 
import {createStore, applyMiddleware} from 'redux'; 
import {Router, Route, browserHistory} from 'react-router'; // , IndexRoute 
import promise from 'redux-promise'; 
import reducers from './app/reducers'; 

const createStoreWithMiddleware = applyMiddleware(promise)(createStore); 

// components 
import {IndexTimesheet} from './app/components/indexTimesheet'; 

ReactDOM.render(
<Provider store={createStoreWithMiddleware(reducers)}> 
    <Router history={browserHistory}> 
    <Route path="/" component={IndexTimesheet}/> 
    </Router> 
</Provider>, 
document.getElementById('root') 
); 

getTime.js (файл действия)

import axios from 'axios'; 
export const GET_TIME = 'GET_TIME'; 
export const ROOT_URL = 'http://127.0.0.1:3055/api/v1/timesheet/'; 


export function getTimesheet() { 
    const request = axios.get(ROOT_URL); 

    return { 
    type: GET_TIME, 
    payload: request 
    }; 
} 

табель reducer.js

import {GET_TIME} from '../actions/getTime'; 
const INITIAL_STATE = {all: [], user: []}; 

export default function (state = INITIAL_STATE, action) { 
    switch (action.type) { 
    case GET_TIME: 
    return {state, all: action.payload.data}; 
    default: 
    return state; 
    } 
} 

индекс редуктор

import {combineReducers} from 'redux'; 
import TimesheetReducer from './timesheet'; 

const rootReducer = combineReducers({ 
    time: TimesheetReducer 
}); 

export default rootReducer; 

ответ

2

я смог заново создать свой проект в шаблоне шаблонного у меня есть, и также был в состоянии создать заново ваш вопрос.

В ваших index.js:

// Компоненты

import {IndexTimesheet} from './app/components/indexTimesheet'; 

Должно быть это - не скобки вокруг компонента:

import IndexTimesheet from './app/components/indexTimesheet'; 

Это интересная проблема, потому что, как вы скажем, он не выдает ошибок ... , когда у вас есть это, завернутое в магазин redux и реагирующий маршрутизатор.

Если бы вы были просто сделать:

ReactDOM.render(<IndexTimesheet />, document.getElementById('root')); 

Это будет сгенерировано сообщение об ошибке:

warning.js:45 Warning: React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components).warning @ warning.js:45ReactElementValidator.createElement @ ReactElementValidator.js:221(anonymous function) @ index.js:37(anonymous function) @ index.js:39(anonymous function) @ index.js:40(anonymous function) @ bundle.js:1036__webpack_require__ @ bundle.js:556fn @ bundle.js:87(anonymous function) @ multi_main:3(anonymous function) @ bundle.js:586__webpack_require__ @ bundle.js:556(anonymous function) @ bundle.js:579(anonymous function) @ bundle.js:582 
invariant.js:39 Uncaught Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. 

Так где-то ошибка, проглоченный Redux/React-маршрутизатор, я не копали где. В будущем устранение неполадок всегда пытается упростить вашу проблему. Сделайте все как можно более гладкими, а затем создайте их, пока не получите ошибку. Я снял ваш магазин redux и упаковку с реактивным маршрутизатором, и именно так я смог ее раскрыть.

Попробуйте и убедитесь, что это было не только на моей сборке.

Смежные вопросы