2024年最新【前台学习】React框架学习_setcontractstatusarr react,跳槽薪资翻倍

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

//类
<script type="text/babel">
    class MyCom extends React.Component {
        constructor(props){
          	super(props);
            this.states{}
        }
        render() {
            return (
                <div> 我是一个组件</div >
            )
        }
    }
    let dom = <MyCom />
    ReactDOM.render(dom, document.getElementById("example"));
</script>

Props数据传递

  1. 组件外部数据对组件进行数据传递
  2. 父组件对子组件数据传递

单属性就照常传递

类就是直接拿this.props就行,不用传递

<script type="text/babel">
    function MyCom(props) {
        return (
            <div>我是一个组件{props.text},{props.tip}</div>
        )
    }
    MyCom.defaultProps = {
        tip: <h1>我是默认提示</h1>
    }
    let dom = <MyCom text="传递数据" />
    ReactDOM.render(dom, document.getElementById("example"));
</script>

多属性需要用特殊语法

{…对象} 可以把他的属性展开

let obj={
	text: "text",
  num:"num"
}
<MyCom {...obj}/>

综合使用&刷新render

let flag = true;
    function Father(props) {
        return (
            <div onClick={() => { flag = !flag; console.log(flag); render(); }}>
                我是父组件
                {flag == true ? <h1>点击隐藏</h1> : <h1>点击展开</h1>}
                <Son text="传递信息" />
            </div>
        )
    }
    function Son(props) {
        return (
            <div style={{ display: flag ? "block" : "none" }}>我是子组件{props.text}</div>
        )
    }
    function render() {
        ReactDOM.render(Father(), document.getElementById("example"));
    }
    render();

status异步可变参数

props是不可变的对于子类,而status是可变的并且使用this.setStatus可以异步刷新不需要调用render()并且其附属的子类也不用刷新

React高级

路由-基础使用

需要先下载react-route-dom包
下载:cnpm install --save react-route-dom
hashRoute路径 带/#/号的缓存
browserRoute 历史路径

index.js里面引用并且使用以上一个route模式
然后app.js里面直接引用路由组件,通过浏览器访问不同路径就能到不同的组件了

tip:比如有个首页 / 和一些其他页面/other
匹配other 的时候也会匹配/
这时候就需要加属性route上面加exact属性,就全匹配才能;
tip: redirect可以配置重定向,就能设置默认首页了

路由高级组件

以下均基于withRouter
下载: cnpm install --save react-router-dom

withRouter引入主页面app.js
export default组件的时候带上withRouter(app)
此时app.js内部的props就有路由切换组件的三个属性(location match history)

import Home from './components/Home';
import {withRouter,Switch,Route,NavLink,Redirect} from 'react-router-dom';
import A from './components/A';
import B from './components/B';
function App(props) {
    props.history.listen((link)=>{
        console.log(props);
    })
  return (
    <div className="App">
        <div>
            <NavLink to="/a">点我去phone</NavLink>
            <NavLink to="/b">点我去User</NavLink>
        </div>
        <Switch>
            <Route path="/a" component={A}/ >
            <Route path="/b" component={B}/>
            <Route path="/home" component={Home}/>
            <Redirect from="/" to="/home" exact/>
        </Switch>
    </div>
  );
}

export default withRouter(App);

路由跳转[点击,事件]
点击nav或者输入路由能跳转,代码同样可以

<button onClick={ ()=>{props.history.push("/a")}}>点我去a</button>
<button onClick={ ()=>{props.history.push("/b")}}>点我去b</button>
<button onClick={ ()=>{props.history.push("/home")}}>>点我去home</button>

参数传递-路由实现

优点,刷新地址参数仍然在
只能传递字符。且url会携带数据

Route路径改成 /home/:id
navLink改成或者浏览器输入 /home/我是id
最后跳转的页面通过this.props.match.params.id就能获取了
参数传递-query实现

优点:可传递对象大量数据,不可见
缺点:没太大

通过query传递参数

<NavLink to={ {pathname: "/User,query: {"name:"小明"}}}>点我去User</NavLink>


通过this.props.location.query.name获取

Hook简化有状态组件

之前有状态组件要基础component然后用status来实现
现在用Hook直接useState(需要先引用)来定义状态
其中第一个是状态值,第二参数是状态函数(类似setState)

function A(){

        let [val, setVal] = useState({ name: "aa", pwd: "123" })
        return (
            <div className="App">
                <div>
                    使用数据:{val.name}
                    <button onClick={() => { setVal({ name: "修改" }) }}>点我进行数据的修改</button>
                </div>
            </div>
        )
}

Redux集中管理组件[增删改查]

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

1715666542768)]
[外链图片转存中…(img-oP8599S2-1715666542768)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值