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

雷锋书签制作图片seo有哪些作用

雷锋书签制作图片,seo有哪些作用,做游戏平面设计好的素材网站有哪些,没有营业执照可以做网站吗组件 组件是用来实现局部功能的代码和资源的集合(html/css/js),用来复用代码。 react中分为函数式组件和类式组件。函数式组件就是一个函数,函数的返回值就是组件的视图内容。类式组件就是通过class关键字创建的类,类…

组件

组件是用来实现局部功能的代码和资源的集合(html/css/js),用来复用代码。
react中分为函数式组件和类式组件。函数式组件就是一个函数,函数的返回值就是组件的视图内容。类式组件就是通过class关键字创建的类,类式组件通过render函数返回视图内容。

函数式组件

function Good(){return <div><h1>news</h1></div>
}

类式组件

类式组件必须继承React.Component

class Good extends React.Component{}
  1. React解析组件标签,找到Good组件
  2. 发现组件是使用类定义的,随后new出来该类的实例,并通过该类实例调用到原型上的render()
  3. 将render返回的虚拟DOM转为真实DOM,随后呈现在页面中

简单组件和复杂组件

如果一个组件有状态就是复杂组件,如果一个组件没有状态就是简单组件。

组件实例的属性

组件实例属性包含state、props、refs这三个常用的属性。其中refs只能在类组件中使用,如果在函数式组件中想要使用refs需要使用其他的api获取元素引用。

state

state是组件对象最重要的属性,值是对象。组件被称为状态机,通过更新组件的state来更新对应的页面显示。

状态必须通过setState修改,setState()接收一个对象,对象中设置需要更改的key和value。

class Demo extends React.Component{state = {description:'hello'}handleClick(){this.setState({descriptin:'hello'});	}render(){return <div><span>{this.state.description}</span><button onClick={this.handleClick}>change</button></div>}
}

props

组件实例属性props指的是从外部传递给组件的值,props在组件内部是只读的,不能通过this.props.xxx修改。

class Person extends React.Component{render(){const {name,age,sex} = this.props;return <><ul><li>{name}</li><li>{age}</li><li>{sex}</li></ul></>}
}

我们可以通过propsTypes限制props的类型,通过defaultProps设置props的默认值。propsTypes和defaultProps都是类的静态成员,除了直接使用Person设置之外还可以通过类的语句块中通过static关键字设置。

// 限制props的类型
Person.propTypes = {name:PropTypes.string,age:PropTypes.number,sex:PropTypes.string
}
// 设置props的默认值
Person.defaultProps = {name:'hello'
}
// 向组件传递props
React.render(<Person name="Tom" age={18} sex="Man" />,document.getElementById('app'));
let p = {name:"Tom", age:18, sex:"Man" 
}
React.render(<Person {...p}/>,document.getElementById('test'));

static关键字设置propsTypes

class Person extends React.Component{static propsTypes = {name:PropTypes.string,age:PropTypes.number,sex:PropTypes.string}static defaultProps = {name:'hello'}render(){return <div>// ...</div>}
}

refs

组件实例属性refs,refs指的是获取元素的引用。通过给元素设置ref属性得到其引用。refs从使用方式上分为字符串类型、函数类型。字符串类型的如下所示:

class Person extends React.Component{render(){return <><input ref="input_left" type="text" placeholder="点击按钮提示数据" /><button onClick={this.tooltip}>点击提示数据</button><input ref="input_right" type="text" placeholder="失焦提示数据" /></>}
}
回调函数形式的refs

回调形式的ref在更新时会执行两次,第一次会传递一个null,第二次才会传递元素。这是因为在更新时会实例化一个新的对象,并重新渲染。

回调函数分为内联的回调函数和类绑定的回调函数

 class Person extends React.Component {state = {}static propTypes = {name: PropTypes.string,age: PropTypes.number,gender: PropTypes.string}static defaultProps = {name: 'hello'}constructor(props) {super(props);}tooltip = (e)=>{alert(this.input_left.value)}toolTipRight = () => {alert(this.input_right.value)}render() {return <div><input ref={(el) => {this.input_left = el;}} type="text" 			placeholder="点击按钮提示数据" /><button onClick={this.tooltip}>点击提示数据</button><input ref={(el) => {this.input_right = el;}} onBlur=			{this.toolTipRight} type="text" placeholder="失焦提示数据" /></div>}}
createRef的refs

除了上面的方式之外,还可以通过createRef创建容器,然后获取元素的引用。

class Person extends React.Component {myRef = React.createRef()myRef2 = React.createRef()state = {}constructor(props) {super(props);}tooltip = (e)=>{console.log(this.myRef)alert(this.myRef.current.value);}toolTipRight = () => {alert(this.myRef2.current.value);}render() {return <div><input ref={this.myRef} type="text" placeholder="点击按钮提示数据" /><button onClick={this.tooltip}>点击提示数据</button><input ref={this.myRef2} onBlur={this.toolTipRight} type="text" placeholder="失焦提示数据" /></div>}}

事件处理

通过onXxx属性指定事件处理函数。

  • React使用的是自定义事件,不是原生事件。为了更好的兼容性
  • React中的事件是通过委托方式处理的。为了高效

通过event.target得到发生的事件的DOM元素对象

受控组件

页面中所有输入类的DOM,随着输入把数据存入state就是受控组件。

 class Login extends React.Component {state = {userName:'',password:''}submit=(e)=>{e.preventDefault();const {userName,password} = this.state;}saveFormData = (key) => {return (e) => {this.setState({[key]: e.target.value});}}render() {return <form action="" onSubmit={this.submit}>用户名<input ref={(el) => this.userNameInput = el} onChange={this.saveFormData('userName')} type="text" name="username" />密码<input ref={(el) => this.passwordInput = el} onChange={this.saveFormData('password')} type="password" name="password" /> <button>登录</button></form>}}
http://www.shuangfujiaoyu.com/news/32342.html

相关文章:

  • 武汉市哪里做公司企业网站优秀软文范例800字
  • 网站登录慢东莞seo外包公司哪家好
  • 开利网络企业网站建设第一品牌怎么优化关键词
  • 河南省电力工程建设企业协会网站怎么推广一个网站
  • 发生太多重定位wordpress深圳网站建设专业乐云seo
  • 东莞粤保保安公司长沙百度快速优化排名
  • 武义住房和城乡建设局网站广告平台网
  • 学会网站建设目的兰州做网站的公司
  • 大型网站开发模型网游推广员
  • 做最漂亮的网站免费推广方式都有哪些
  • 织梦英文网站模板广州seo公司如何
  • 国家疫情防控最新政策解读搜索引擎排名优化seo课后题
  • 如何低成本做网站推广上海网络排名优化
  • 做新闻网站如何关键词什么意思
  • 湖南专业外贸建站公司网站排名优化培训
  • 有模板做ppt的网站有哪些西安做网页的公司
  • 一建报考专业seo搜索优化是什么呢
  • 网站的字体优化大师app下载
  • 公司做二手网站的用意seo关键词排名教程
  • 小程序网站制作公司厦门人才网官网招聘
  • 赌博网站游戏怎么做链接买卖
  • 扬中网站建设南宁seo教程
  • 网站建设评价国外免费网站域名服务器查询
  • 北京软件外包公司排名在线排名优化
  • 自适应网站建站价格网站如何被百度快速收录
  • 国外网站怎么做推广谷歌关键词查询工具
  • 山东网站策划怎么做网络推广的常用方法
  • 做网站需要看的书友情链接英文翻译
  • 高古楼网站找活做百度 营销推广怎么做
  • 广州开发公司陕西新站seo