摘要:需要的第三方庫(kù)等等兩個(gè)頁(yè)面中使用修改輸入框樣式組件引用大牛小伙子請(qǐng)輸入大牛小伙子
需要的第三方庫(kù):react | prop-types | classnames | 等等
兩個(gè)頁(yè)面 Input.js | input.less
Input.js
import React,{Component} from "react"; import {PropTypes} from "prop-types"; import classNames from "classnames"; import "./input.less" export default class Input extends Component { constructor(props){ super(props); this.state = { value:props.value } } componentWillReceiveProps(props){ if(props.value !== this.props.value){ this.setState({value:props.value}) } } handleChange(e){ const { onChange,length } = this.props; let val = e.target.value if(val.length > length){ e.target.value = val; } this.setState({value:val}) onChange && onChange(e,val) } render(){ const {prefixCls,style,className,children,type,length, ...other} = this.props; const cls = classNames(className,`${prefixCls}`,{"textarea":type ==="textarea"}) if(type==="textarea") return ( ) return ( ) } } DaNiu.propTypes = { prefixCls:PropTypes.string, type:PropTypes.string, } DaNiu.defaultProps = { prefixCls:"d-input", type:"text", }
input.less
.d-input{ position: relative; } .d-input-inner{ // iOS 中使用appearance修改輸入框樣式 appearance: none; background-color: #fff; background-image: none; border-radius: 5px; border: 1px solid #E8E8E8; box-sizing: border-box; color: #1f2d3d; font-size: inherit; width: 100%; height: 30px; line-height: 14px; outline: 0; padding: 3px 10px; display: inline-block; transition: #0fa120 0.5 ease-in; &:hover{ border:1px solid #aeaeae; } &:focus{ border-color: #0fa120; box-shadow: 0 0 0 2px rgba(84,220,103,0.14); } &:focus&::placeholder{ color:#d5d5d5; } }
組件引用
Index.js
import React,{Component} from "react"; import "./index.less" import Input from "./Input" export default class Index extends Component{ constructor(props){ super(props); this.state={ visible:false, loading:true, source:"" } } onChange(e,value){ console.log("e",value) value && value === "大牛小伙子" ? this.setState({source:value}) : this.setState({source:""}) } render(){ return(請(qǐng)輸入:大牛小伙子) } }
{this.state.source}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87148.html
摘要:可以看到,這樣不僅沒(méi)有占用組件自己的,也不需要手寫回調(diào)函數(shù)進(jìn)行處理,這些處理都?jí)嚎s成了一行。效果通過(guò)拿到周期才執(zhí)行的回調(diào)函數(shù)。實(shí)現(xiàn)等價(jià)于的回調(diào)僅執(zhí)行一次時(shí),因此直接把回調(diào)函數(shù)拋出來(lái)即可。 1 引言 上周的 精讀《React Hooks》 已經(jīng)實(shí)現(xiàn)了對(duì) React Hooks 的基本認(rèn)知,也許你也看了 React Hooks 基本實(shí)現(xiàn)剖析(就是數(shù)組),但理解實(shí)現(xiàn)原理就可以用好了嗎?學(xué)的是...
摘要:上圖是二月份前端框架排名,位居第一,排名第三。我們認(rèn)為前端模板和組件代碼是緊密相連的。直到最近看了文檔,才發(fā)現(xiàn)另有蹊蹺。 歡迎大家關(guān)注騰訊云技術(shù)社區(qū)-segmentfault官方主頁(yè),我們將持續(xù)在博客園為大家推薦技術(shù)精品文章哦~ 紀(jì)俊,從事Web前端開發(fā)工作,2016年加入騰訊OMG廣告平臺(tái)產(chǎn)品部,喜歡研究前端技術(shù)框架。 這里要討論的話題,不是前端框架哪家強(qiáng),因?yàn)樵?Vue 官網(wǎng)就已經(jīng)...
摘要:案例持續(xù)觸發(fā)事件時(shí),并不立即執(zhí)行函數(shù),當(dāng)毫秒內(nèi)沒(méi)有觸發(fā)事件時(shí),才會(huì)延時(shí)觸發(fā)一次函數(shù)。也以函數(shù)形式暴露普通插槽。這樣的場(chǎng)景組件用函數(shù)式組件是非常方便的。相關(guān)閱讀函數(shù)式組件自定義指令前言 有echarts使用經(jīng)驗(yàn)的同學(xué)可能遇到過(guò)這樣的場(chǎng)景,在window.onresize事件回調(diào)里觸發(fā)echartsBox.resize()方法來(lái)達(dá)到重繪的目的,resize事件是連續(xù)觸發(fā)的這意味著echarts...
摘要:組件設(shè)計(jì)的目標(biāo)是解決用戶上傳文件的便利性,但是中后臺(tái)組件的場(chǎng)景是多種多樣的,所以可擴(kuò)展能力是組件不可忽視的另一方面。我們可能的期望是在任何瀏覽器下交互和都一致的組件。由此我們做出了兩個(gè)通用的組件文件選擇器。 Upload 組件設(shè)計(jì)的目標(biāo)是解決用戶上傳文件的便利性,但是中后臺(tái) Upload 組件的場(chǎng)景是多種多樣的,所以可擴(kuò)展能力是 Upload 組件不可忽視的另一方面。 同樣為了大家能夠...
閱讀 1324·2021-11-24 10:24
閱讀 4167·2021-11-22 15:29
閱讀 1099·2019-08-30 15:53
閱讀 2801·2019-08-30 10:54
閱讀 1987·2019-08-29 17:26
閱讀 1292·2019-08-29 17:08
閱讀 613·2019-08-28 17:55
閱讀 1591·2019-08-26 14:01