我的第一个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父子组件和组件类的继承弄混在一起了.这两个东西完全是不相关的. 父子组件可以看成两个组件标签的包含关系,在另外一个组件标签的内部就是子组件,父子组件通过这种关系通信. 组 ...
随机推荐
- python windows打包
接触过的工具有pyinstaller,或者py2exe.感觉pyinstaller更简单易用. 真正将依赖的dll打包称一个安装包还需要借助windows打包工具 Inno Setup 或 NSIS ...
- 关于office word 应用程序下载配置
Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} fai ...
- 4.9版本的linux内核中实时时钟芯片pcf85263的驱动源码在哪里
答:drivers/rtc/rtc-pcf85263.c,内核配置选项为 CONFIG_RTC_DRV_PCF85263 Location: -> Device Drivers -> Re ...
- 源码编译nginx
[root@localhost local]# yum -y install pcre pcre-devel#解压nginx源码包[root@localhost local]# tar -zxvf / ...
- Java数字证书操作
为服务器生成证书 keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\tomcat.keystore -validity 36500 为 ...
- python x[:] x[::]用法总结
python x[:] x[::]用法总结 X[:,0] # 二维数组取第1维所有数据 X[:,1] # 第2列 X[0,:] # 第1行 X[3,:] # 第三行 X[1:4,:] # 第一二三行 ...
- HDU 3861 The King's Problem(强连通分量缩点+最小路径覆盖)
http://acm.hdu.edu.cn/showproblem.php?pid=3861 题意: 国王要对n个城市进行规划,将这些城市分成若干个城市,强连通的城市必须处于一个州,另外一个州内的任意 ...
- kubernetes dashboard 二次开发
Kubernetes Dashboard 二次开发 官方源码:https://github.com/kubernetes/dashboard 开发文档:https://github.com/kuber ...
- Eclipse关联JDK源码
1. http://blog.csdn.net/weiwangchao_/article/details/25960961 2. 1.点 "window">"Pre ...
- Java 练习题摘录
2018-01-21 23:23:08 1.finally与return同时出现的情况 finally中有return语句则会使try...catch中的return语句失效 public stati ...