赞
踩
1.英文官网: https://reactjs.org/
2.中文官网: https://react.docschina.org/
1.用于动态构建用户界面的 JavaScript 库(只关注于视图)
2.由Facebook开源
1) 写法:var ele = <h1>Hello JSX!</h1>
2)注意1:它不是字符串, 也不是HTML/XML标签
3)注意2:它最终产生的就是一个JS对象
当应用的js都以模块来编写的, 这个应用就是一个模块化的应用
当应用是以多组件的方式实现, 这个应用就是一个组件化的应用
正常情况下,我们只能通过修改state
或者prop
来触发组件的重新渲染,但是,Ref
提供了一种新的方式,可以让你直接去修改自定义组件或者DOM。
1.字符串形式的ref
<input ref="input1"/>
2.回调形式的ref
<input ref={(c)=>{this.input1 = c}}
3.createRef创建ref容器·
myRef = React.createRef()
<input ref={this.myRef}/>
// 访问 Refs
const node = this.myRef.current;
你不能在函数组件上使用 ref 属性,因为他们没有实例。
1 转发引入Ref
这个场景实际很简单,比如父组件想获取孙组件,某一个dom
元素。这种隔代ref
获取引用,就需要forwardRef
来助力。
function Son (props){ const { grandRef } = props return <div> <div> i am alien </div> <span ref={grandRef} >这个是想要获取元素</span> </div> } class Father extends React.Component{ constructor(props){ super(props) } render(){ return <div> <Son grandRef={this.props.grandRef} /> </div> } } const NewFather = React.forwardRef((props,ref)=><Father grandRef={ref} {...props} /> ) class GrandFather extends React.Component{ constructor(props){ super(props) } node = null componentDidMount(){ console.log(this.node) } render(){ return <div> <NewFather ref={(node)=> this.node = node } /> </div> } }
2 高阶组件转发Ref
由于属性代理的hoc
,被包裹一层,所以如果是类组件,是通过ref
拿不到原始组件的实例的,不过我们可以通过forWardRef
转发ref。
function HOC(Component){ class Wrap extends React.Component{ render(){ const { forwardedRef ,...otherprops } = this.props return <Component ref={forwardedRef} {...otherprops} /> } } return React.forwardRef((props,ref)=> <Wrap forwardedRef={ref} {...props} /> ) } class Index extends React.Component{ componentDidMount(){ console.log(666) } render(){ return <div>hello,world</div> } } const HocIndex = HOC(Index,true) export default ()=>{ const node = useRef(null) useEffect(()=>{ /* 就可以跨层级,捕获到 Index 组件的实例了 */ console.log(node.current.componentDidMount) },[]) return <div><HocIndex ref={node} /></div> }
包含表单的组件分类
第一步,全局安装:npm i -g create-react-app
第二步,切换到想创项目的目录,使用命令:create-react-app hello-react
第三步,进入项目文件夹:cd hello-react
第四步,启动项目:npm start
public ---- 静态资源文件夹 favicon.icon ------ 网站页签图标 index.html -------- 主页面 logo192.png ------- logo图 logo512.png ------- logo图 manifest.json ----- 应用加壳的配置文件 robots.txt -------- 爬虫协议文件 src ---- 源码文件夹 App.css -------- App组件的样式 App.js --------- App组件 App.test.js ---- 用于给App做测试 index.css ------ 样式 index.js ------- 入口文件 logo.svg ------- logo图 reportWebVitals.js --- 页面性能分析文件(需要web-vitals库的支持) setupTests.js ---- 组件单元测试的文件(需要jest-dom库的支持)
什么是路由?
路由分类
1. <BrowserRouter>
2. <HashRouter>
3. <Route>
4. <Redirect>
5. <Link>
6. <NavLink>
7. <Switch>
作用:创建包含指定reducer的store对象
作用:应用上基于redux的中间件(插件库)
作用:合并多个reducer函数
npm install --save redux-thunk
<Provider store={store}>
<App />
</Provider>
import { connect } from 'react-redux'
connect(
mapStateToprops,
mapDispatchToProps
)(Counter)
const mapStateToprops = function (state) {
return {
value: state
}
}
指接受React组件作为参数,输出一个新的组件的函数
高阶组件:forwardRef
,memo
通过函数调用继续返回函数的方式,实现多次接收参数最后统一处理的函数编码形式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。