我的第一个React自定义组件
今天随便翻了一下antd的组件库,看到下面这样的组件,当时我就震惊了:
这尼玛,这是出于什么样的考虑,一个列表还要用户编写子项的渲染方式。
所以,我就自己写了一个
List.js:
List.less:
index.js:
效果:
当然,可以根据需要添加更多的事件以及对其他数据格式的支持。
自个儿写了个Input输入框组件:
X_UI.js:
import React, { Component } from 'react';
import './X_UI.less'; /*输入框*/
export class Input extends Component {
constructor(props) {
super(props);
this.state = {
value:props.value,
}
}
/*双向数据绑定更新父组件*/
onchange = (e)=>{
var value = e.target.value;
this.setState({
value:value
});
if(this.props.onChange){
this.props.onChange(value);
}
}
/*双向数据绑定更新子组件*/
componentWillReceiveProps = (nextProps) => {
this.setState({
value:nextProps.value,
})
}
render() {
console.log(this.props.size);
var style;
switch (this.props.size){
case 'large':
style={
height:'36px',
inlineHeight:'36px',
fontSize:'18px'
}
break;
case 'small':
style={
height:'24px',
inlineHeight:'24px',
fontSize:'12px'
}
break;
default:
style={
height:'30px',
inlineHeight:'30px',
fontSize:'15px'
}
break;
}
//与props.style属性合并
style = Object.assign(this.props.style||{},style)
var placeholder = this.props.placeholder||'请输入...';
return (
<div className="x_input">
<input placeholder={placeholder} style={style} onChange={this.onchange} value={this.state.value}></input>
</div>
);
}
}
X_UI.less:
@gray:rgb(,,);
@blue:rgb(,,); input::-webkit-input-placeholder{
color:@gray !important;
}
input::-moz-placeholder{
color:@gray !important;
}
input:-ms-input-placeholder {
color:@gray !important;
} .x_input{
>input{
border:1px solid @gray;
padding:2px 6px;
border-radius:4px;
}
>input:hover{
border:1px solid @blue;
}
>input:focus{
border:1px solid transparent;
box-shadow: 3px 1px @blue;
outline:none
}
}
App.js:
import React, { Component } from 'react';
import {Input} from '../../components/X_UI'
import './App.less'; export class App extends Component {
constructor(props) {
super(props);
this.state = {
value:'hello'
};
}
change=(value)=>{
this.setState({
value:value
})
}
render() {
return (
<div className="app">
<Input size="small" value={this.state.value} onChange={this.change} />
{this.state.value}
<button onClick={this.change.bind(this,'world')}>Click</button>
</div>
);
}
}
效果:
我的第一个React自定义组件的更多相关文章
- Griddle, griddle-react 一个REACT 表格组件
Griddle, griddle-react 一个REACT 表格组件: http://griddlegriddle.github.io/Griddle/index.html
- react自定义组件属性类型检测
react当中的props-type用来检测传入组件当中的数据是否符合组件的要求,但是之前的只是能做些简单常规的判断,如果需要做复杂的判断,就需要使用到自定义函数来做类型检测了. 下面是官网的例子 c ...
- 移动web端的react.js组件化方案
背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近 ...
- 动手实现react Modal组件
Modal组件 长话不多说,接下来让我们来动手实现一个react Modal组件. 我们先来看一下实际效果 Modal的布局 首先,让我们先思考下一个Modal组件的布局是怎么样的. 我们先拿一个基本 ...
- React Native组件的结构和生命周期
React Native组件的结构和生命周期 一.组件的结构 1.导入引用 可以理解为C++编程中的头文件. 导入引用包括导入react native定义的组件.API,以及自定义的组件. 1.1 导 ...
- 使用react context实现一个支持组件组合和嵌套的React Tab组件
纵观react的tab组件中,即使是github上star数多的tab组件,实现原理都非常冗余. 例如Github上star数超四百星的react-tab,其在render的时候都会动态计算哪个tab ...
- 分享一个react 图片上传组件 支持OSS 七牛云
react-uplod-img 是一个基于 React antd组件的图片上传组件 支持oss qiniu等服务端自定义获取签名,批量上传, 预览, 删除, 排序等功能 需要 react 版本大于 v ...
- React自己写的一个地图小组件
由于今天比较闲,就玩了玩react,然后就封装了一个地图的组件,当然功能比较简单,因为就是随手写的小东西,但是由于引用了百度API和bee-mobile,所以用起来可能要薛微麻烦一点点,但是我保证,只 ...
- React父子组件的一个混淆点
反正我自己是混淆了,React父子组件和组件类的继承弄混在一起了.这两个东西完全是不相关的. 父子组件可以看成两个组件标签的包含关系,在另外一个组件标签的内部就是子组件,父子组件通过这种关系通信. 组 ...
随机推荐
- FTP 两种工作模式
主动模式port FTP主动模式:TCP链接客户端访问FTP,客户端会开启一个大于1024的端口N访问FTP的21端口(控制端口),并通过21端口发送port命令与N+1的端口,服务端收到命令后会使用 ...
- SQL Server 对XML数据类型的SQL语句总结
--创建XMLTable , ) primary key, XMLCol xml); go ------------------------------------------------------ ...
- 前端js实现字符串/图片/excel文件下载
在web开发中,如果你想让用户下载或者导出一个文件,应该怎么做呢?传统的做法是在后端存储或者即时生成一个文件来提供下载功能,这样的优势是可以做权限控制.数据二次处理,但缺点是需要额外发起请求.增大服务 ...
- 通过paramiko模块在远程主机上执行命令
安装paramiko模块 /usr/local/python36/bin/pip3 install paramiko 1.获取cpu使用率 #!/usr/bin/python #coding=utf8 ...
- db2 xml 转 table
版本:DB2 Version 9.1 1.创建测试表,初始化数据 create table emp (doc XML); INSERT INTO EMP VALUES ('<dept bldg= ...
- parted 分区
Linux下的GPT分区 GPT分区 这是另外一种分区,针对MBR分区,它有很多优点: (1)几乎突破了分区个数的限制. 在GPT分区表中最多可以支持128个主分区. (2)单个分区容量几乎没有限制. ...
- LeetCode——minimum-path-sum
Question Given a m x n grid filled with non-negative numbers, find a path from top left to bottom ri ...
- Android自定义view-CircleSeekbar
自定义view练手,效果图如下:实现功能 可设置圆环颜色和线宽及触摸后的颜色和线宽 可设置圆环内圈显示的文本内容及字体大小.颜色 可设置触摸点的图片 可设置触摸的有效范围 源码git ...
- apollo各协议支持的客户端
apollo 源自 activemq,以快速.可靠著称,支持多协议:STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets,下面就STOMP, AMQP, M ...
- 图 Graph-图的相关算法
2018-03-06 17:42:02 一.最短路问题 问题描述:在网络中,求两个不同顶点之间的所有路径中,边的权值之和最小的那一条路径. 这条路径就是两点之间的最短路径 (Shortest Path ...