zoukankan      html  css  js  c++  java
  • react实现极简搜索框效果

    hover.css内容

    *  {
        margin: 0;
        padding: 0;
    }
    
    li.hover {
        background: #ccc;
        color: darkgreen;
    }

    js内容

    import React,{Component} from 'react';
    import ReactDom from 'react-dom';
    import fetchJsonp from 'fetch-jsonp';
    import './css/hover.css';
    
    class Baidu extends Component{
        constructor(){
            super();
            this.state={
                ipt: '',
                arr: []
            }
            this.iptChange = this.iptChange.bind(this);
            this.fnOver = this.fnOver.bind(this);
            this.fnOut = this.fnOut.bind(this);
        }
        iptChange(ev){
            this.setState({
                ipt: ev.target.value
            })
            let URL = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=';
    
            // 切记,是URL+ev.target.value而非this.state.ipt↓因为setState({})是一个异步过程。
         //或者将请求放在
    this.setState的回调函数里。即:this.setState(,()=>{...在这里请求数据就可以直接使用this.state.ipt了...});
    
            fetchJsonp(URL+ev.target.value,{jsonpCallback:'cb'}).then((streamObj)=>{
                streamObj.json().then((data)=>{
                    // console.log(data)
                    this.setState({
                        arr: data.s
                    })
                })
            })
        }
        fnOver(ev){
            ev.target.className='hover'
        }
        fnOut(ev){
            ev.target.className=''
        }
        render(){
            return (
                <div>
                    <input type="text" value={this.state.ipt1} onChange={this.iptChange} />百度
                    <ul>
                        {
                            this.state.arr.map((val,index)=>{
                                return (
                                    <li key={index} onMouseOver={this.fnOver} onMouseOut={this.fnOut}>{val}</li>
                                )
                            })
                        }
                    </ul>
                </div>
            )
        }
    }
    
    ReactDom.render(
        <Baidu></Baidu>,
        document.querySelector('#app')
    )
  • 相关阅读:
    Scratch编程:打猎(十)
    Scratch编程:漂亮的时钟(九)
    剑指offer总结一:字符、数字重复问题
    剑指offer:数值的整数次方
    剑指offer:二进制中1的个数
    InnoDB存储引擎与MyIsam存储引擎的区别
    数据库查询慢的原因
    剑指offer:矩形覆盖
    剑指offer:跳台阶问题
    redis键的过期和内存淘汰策略
  • 原文地址:https://www.cnblogs.com/LLLLily/p/7447096.html
Copyright © 2011-2022 走看看