我對ReactJS相當陌生,所以我仍然在學習繩索,但在嘗試將react-router整合到我的應用程序中時出現錯誤。那我得到可愛的錯誤是:React JS不變違規
未捕獲不變違規:元素類型無效:預期字符串(內置組件)或類/功能(複合組件),但得到:不確定。檢查
App
的渲染方法。
我搜索了這個錯誤,並且看到了一些我不相信適用於我的情況的修復。最常見的錯誤是缺少'return'方法,但我確信我不會錯過一個。
這裏是我的index.js代碼:
import './styles/main.css'
import Contact from './components/Contact.jsx';
import App from './components/App.jsx';
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, hashHistory } from 'react-router'
ReactDOM.render((
<Router history={hashHistory}>
<Route path="/" component={App}>
<Route path="/contact" component={Contact}/>
</Route>
</Router>
), document.getElementById('app'))
而且我App.jsx樣子:
import React from 'react';
import Link from 'react-router'
export default class App extends React.Component {
render() {
return(
<div className="wrapper">
<header>
<h1>Rest Test Contact List</h1>
<nav>
<ul className="navigation">
<li><Link to="/contact">Contact</Link></li>
<li><Link to="/about">About</Link></li>
</ul>
</nav>
</header>
{this.props.children}
</div>
)
}
}
並幫助這個錯誤,將不勝感激。這幾天我一直在撓頭。
謝謝!
我注意到的一件事是在App.jsx中,你沒有正確解構你的'Link'導入。它應該是來自'react-router''的import {Link}。這可能是導致爲什麼使用'Link'作爲組件(在你的App的渲染方法中)未定義的原因。我說'可能',因爲我無法通過所有設置來測試它。 – filoxo
你太棒了!那確實解決了它。你能向我解釋爲什麼我需要使用大括號來從react-router中導入一件事,而你不需要爲React或ReactDOM等其他人做這件事嗎? – ZeroHour
當然!我會用更詳盡的解釋來寫一個答案 – filoxo