create-react-appnpm i -g create-react-app
sudo npm i -g create-react-app

npx create-react-app my-app

npm ERR! code ENOTFOUND
npm ERR! syscall getaddrinfo
npm ERR! errno ENOTFOUND
npm ERR! network request to https://registry.npmmirror.com/create-react-app failed, reason: getaddrinfo ENOTFOUND registry.npmmirror.com
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'

114.114.114.114保存后就可以上网了。
/Users/xxx/Library/Application Support/Google/Chrome
rm -rf component_crx_cache
rm -rf extensions_crx_cache
rm -rf first_party_sets.db
rm -rf first_party_sets.db-journal
rm -rf SingletonCookie -> 6759188605641184688
rm -rf SingletonLock -> MacBook-Pro.local-1291
rm -rf ShaderCache
rm -rf GrShaderCache
create-react-app react-demo1




npm start


创建一个reacr-demo2写自己的小demo,主要是3个文件,如下:


启动看效果:

是能启动,但是好无聊,所以还是简单写点东西吧,继续……
npm i react-router-dom
import {
BrowserRouter as Router,
Route,
Link
} from 'react-router-dom'

问题描述如下:
No routes matched location "/dog"

解决问题,注意新版写法,如下:
<Routes>
<Route exact path="/" element={<Home/>} />
<Route path="/dog" element={<Dog/>} />
<Route path="/cat" element={<Cat/>} />
</Routes>

更多参考,请去官网看例子





App.js 如下:
import PetHeader from './PetHeader/index'
import PetBottom from './PetBottom/index'
import PetLeft from './PetLeft';
function App() {
return (
<div>
<PetHeader></PetHeader>
<PetLeft></PetLeft>
<PetBottom/>
</div>
);
}
export default App;
PetLef 组件

import React from "react"
import {BrowserRouter,Route,Routes,Link} from 'react-router-dom'
import Home from "../Home"
import Dog from "../Dog"
import Cats from "../Cat/Cats"
import './index.css'
class PetLef extends React.Component{
render(){
return(
<BrowserRouter>
<div className="myMainData left" >
{/* 编写路由链接 靠路由链接实现切换组件 */}
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/dog">狗狗信息</Link></li>
<li><Link to="/cats">猫咪信息</Link></li>
</ul>
</div>
<div className="myMainData right" >
{/* 注册路由 */}
<Routes>
<Route exact path="/" element={<Home/>} />
<Route path="/dog" element={<Dog/>} />
<Route path="/cats/*" element={<Cats/>} />
</Routes>
</div>
</BrowserRouter>
)
}
}
export default PetLef;
Cats 和 Cat组件

import React from "react";
import CatInfo from "./Info/CatInfo";
import {Route,Routes,Link} from 'react-router-dom'
class Cats extends React.Component{
state = {
cats:[
{catId:'A1001',catName:'点点',catAge:5,catKind:'德文'},
{catId:'A1002',catName:'阿苔',catAge:6,catKind:'德文'},
{catId:'A1003',catName:'花花',catAge:2,catKind:'布偶'}
]
};
render(){
const {cats} = this.state;
return(
<div>
<h2>猫咪信息</h2>
<ul>
{
cats.map((cat)=>{
return(
<li key={cat.catId}>
{/* */}
<Link to={`/cats/info/${cat.catId}/${cat.catName}`}>
{cat.catId}--{cat.catName}--{cat.catAge}--{cat.catKind}
</Link>
</li>
)
})
}
</ul>
<br /><br />
<Routes>
{/* } /> */ }
<Route path='info/:catId/:catName' element={<CatInfo/>} />
</Routes>
</div>
)
}
}
export default Cats;
import React from "react";
//这个注意:router6新特性,新增的hooks 必须函数式组件
import { useParams } from "react-router-dom";
function Cat(){
// console.log(useParams());
let {catId,catName} = useParams();
return(
<div>
<h3>
{catId}--{catName}
</h3>
</div>
)
}
export default Cat;
npm run build

npm i serve -g
serve build
cd build
serve

