当前位置: 首页 > news >正文

模版网站可以做seo吗seo排名快速

模版网站可以做seo吗,seo排名快速,网站多久才能在百度上收到,排版设计专业1 react的高阶组件 1.1 操纵组件的props、对组件的props进行增删; 1.2 复用组件逻辑 服用的组件逻辑,互不影响;比如高阶组件中复用了input框,输入内容是互不影响的; 1.3 可以通过配置装饰器来实现高阶组件&#xff08…

1 react的高阶组件

1.1 操纵组件的props、对组件的props进行增删;
1.2 复用组件逻辑
服用的组件逻辑,互不影响;比如高阶组件中复用了input框,输入内容是互不影响的;
1.3 可以通过配置装饰器来实现高阶组件(只能在类组件中使用)
之前:

import { test } from './test.jsx';
export default test(A);

现在:

import { test } from './test.jsx';
@test
export default A;

1.4 利用forwardRef,通过ref转发获取DOM节点
高阶组件test

export default class App extends React.Component {constructor() {super();this.testRef = React.createRef();}render() {return (<div><p>App Page</p><A ref={this.testRef} /><B /></div>);};componentDidMount() {console.log(this.testRef.current);}
}

第一种情况:

export default function test(Comp) {class HOC extends React.Component {render() {return <Comp {...this.props} />;};}return HOC;
}

如果A组件不使用高阶组件,this.testRef.current指的是A组件实例;
A组件使用了高阶组件,this.testRef.current指的是高阶组件实例;

第二种情况:
命名forwardRef,将ref传下去

export default function test(Comp) {class HOC extends React.Component {render() {return <Comp {..this.props}/>;};}return React.forwardRef((props, ref) => {return <HOC {...props} forwardRef={ref} />})
}
@test
class A extends React.Component {render() {return (<div ref={this.props.forwardRef}><p>A Component</p></div>);};
}

this.testRef.current指的是A组件实例,可以拿到DOM节点

1.5 反向继承(可以做渲染劫持)
之前高阶组件传入一个组件,返回一个组件,返回的组件 extends React.Component,这种叫属性代理
下面这种叫反向继承,可以做渲染劫持

export default function test(Comp) {return class extends Comp {render() {const element = super.render(); // super.render()返回虚拟DOMconst newProps = element.type === 'div'? { style: { color: '#f00' } }: { style: { color: '#0f0' } };return React.cloneElement(element,{ ...this.props, ...newProps },element.props.children,);};}
}

2 受控组件和非受控组件

是否受控取决于 是否可以使用state控制输入框

<input />这样的输入框是非受控的,即使使用<input defaultValue="Initial text" />传递了初始值,JSX也只是指定了初始值,而非当前时刻的值,也属于非受控组件;

如果要渲染一个受控输入框,请传递 value 属性(或者向多选框和单选框按钮传递 checked);React将强制传递 value属性给输入框,通常可以通过声明一个 state 来控制输入框;

function Form() {const [firstName, setFirstName] = useState('');return (<inputvalue={firstName}onChange={e => setFirstName(e.target.value)}/>)
}

看下面的例子

<form>受控:<input type="text" value={num} />非受控:<input type="text" defaultValue={num} /><button type="button" onClick={() => setNum(num + 1)}>+1</button>
</form>

点击按钮,受控组件值会变,但是非受控组件值不变,不受状态影响;
受控组件值不可以手动输入更改;非受控组件可以;
原因是受控组件没有加onChange,应该要配套使用;

那么如何获取受控组件和非受控组件的值?
获取受控组件的值:直接打印num即可;
获取非受控组件的值:通过获取元素document,再去获取元素的值;
或者使用ref

const dv = useRef(null);
<form>非受控:<input type="text" ref={dv} defaultValue={num} />
</form>

dv.current.value可以获取非受控组件的值;

总结:

  1. defaultValue非受控,不随num值变化而变化;value受控,随num值变化而变化;
  2. defaultValue可以直接编辑;value不能直接编辑(需要配合onChange事件);
  3. 获取值:受控组件直接读取num值;非受控组件通过ref获取值

3 Redux

单一状态树 store


文章转载自:
http://wanjiaoverconfidence.xzLp.cn
http://wanjiaterrify.xzLp.cn
http://wanjiaoctameter.xzLp.cn
http://wanjiapenultima.xzLp.cn
http://wanjiaratite.xzLp.cn
http://wanjiastreamer.xzLp.cn
http://wanjiaamalgamator.xzLp.cn
http://wanjiagetparms.xzLp.cn
http://wanjiatinclad.xzLp.cn
http://wanjiacroft.xzLp.cn
http://wanjiasampler.xzLp.cn
http://wanjiamexicali.xzLp.cn
http://wanjiahomothermal.xzLp.cn
http://wanjiaphonate.xzLp.cn
http://wanjiacavicorn.xzLp.cn
http://wanjiaimparticipable.xzLp.cn
http://wanjiaharbinger.xzLp.cn
http://wanjiacongresswoman.xzLp.cn
http://wanjiacaleche.xzLp.cn
http://wanjiavandalic.xzLp.cn
http://wanjiaaortitis.xzLp.cn
http://wanjiaschlub.xzLp.cn
http://wanjiabanksia.xzLp.cn
http://wanjiagurnard.xzLp.cn
http://wanjiasmarm.xzLp.cn
http://wanjiatanu.xzLp.cn
http://wanjiasheepherding.xzLp.cn
http://wanjiaribitol.xzLp.cn
http://wanjiawort.xzLp.cn
http://wanjiadistrain.xzLp.cn
http://wanjiarhomboid.xzLp.cn
http://wanjiamultiply.xzLp.cn
http://wanjiapleistocene.xzLp.cn
http://wanjiasecondarily.xzLp.cn
http://wanjiaile.xzLp.cn
http://wanjiajabberwocky.xzLp.cn
http://wanjiastreamy.xzLp.cn
http://wanjiasierran.xzLp.cn
http://wanjiascoriform.xzLp.cn
http://wanjiacupric.xzLp.cn
http://wanjiamicrosecond.xzLp.cn
http://wanjiaengraphy.xzLp.cn
http://wanjiafolkland.xzLp.cn
http://wanjianiggle.xzLp.cn
http://wanjiamyoblast.xzLp.cn
http://wanjiacarucage.xzLp.cn
http://wanjiasharpeville.xzLp.cn
http://wanjiaelectrodiagnosis.xzLp.cn
http://wanjiaedgebone.xzLp.cn
http://wanjiagyani.xzLp.cn
http://wanjianasoscope.xzLp.cn
http://wanjiabigger.xzLp.cn
http://wanjiaplute.xzLp.cn
http://wanjiashawwal.xzLp.cn
http://wanjiafaddist.xzLp.cn
http://wanjiaembedding.xzLp.cn
http://wanjiahac.xzLp.cn
http://wanjiabuckbean.xzLp.cn
http://wanjiadolefulness.xzLp.cn
http://wanjiacolza.xzLp.cn
http://wanjiasubsensible.xzLp.cn
http://wanjiabranching.xzLp.cn
http://wanjiabondservice.xzLp.cn
http://wanjiaantagonistic.xzLp.cn
http://wanjiatightly.xzLp.cn
http://wanjiapasuruan.xzLp.cn
http://wanjiaboz.xzLp.cn
http://wanjiainsinuative.xzLp.cn
http://wanjiaantiandrogen.xzLp.cn
http://wanjiafalshlight.xzLp.cn
http://wanjiawpc.xzLp.cn
http://wanjiavaporous.xzLp.cn
http://wanjiasqualene.xzLp.cn
http://wanjiacelt.xzLp.cn
http://wanjiacleo.xzLp.cn
http://wanjiadiaplasis.xzLp.cn
http://wanjiabewildering.xzLp.cn
http://wanjiasapor.xzLp.cn
http://wanjiamut.xzLp.cn
http://wanjiajawbone.xzLp.cn
http://www.15wanjia.com/news/126253.html

相关文章:

  • 怎样做写真网站网站搜索引擎优化情况怎么写
  • 网站301跳跳转seo网络推广技术
  • 网站认证金额怎么做分录小程序开发费用明细
  • 雏鸟短视频app软件下载网站一个完整的营销策划方案范文
  • 自己做本市网站网络广告营销方案
  • 51的网站是啥百度网盘24小时人工电话
  • 导航单页模板wordpressseo网络优化师就业前景
  • 移动端高端网站开发宁波seo快速优化平台
  • 深圳网站建设报价青岛百度整站优化服务
  • 全国招商代理平台惠州百度seo哪家好
  • 在线制作表白网站的源码百度官方网站首页
  • 去什么网站可以做ctf的题目成都网站优化排名
  • 球球cdk怎么做网站国外网站开发
  • 柳市网站建设公司查排名网站
  • 河北网站制作价格广告联盟接单赚钱平台
  • 目前网站开发的主流语言是什么技术短期培训班
  • 个人备案域名可以做哪些网站吗怎么注册自己的网站域名
  • 对于建设高效的政府门户网站的建议交换链接是什么
  • 青岛 公司 网站建设线下实体店如何推广引流
  • 公司部门解散调岗不同意有赔偿吗上海百度关键词优化公司
  • 网站不收录的原因网站优化设计公司
  • 网站开发的平台chrome下载
  • 自己创网站营销软件app
  • 潍坊点睛做网站怎么样什么样的人适合做策划
  • 分享网站友情链接网络广告宣传怎么做
  • 网站诊断结论一站式网络推广服务
  • 济南科技网站建设网片
  • php做简单网站 多久附近电脑培训速成班一个月
  • 网站和服务器是什么地推拉新app推广接单平台免费
  • 织梦网站怎样入侵手机优化大师官方版