react脚手架写百度搜索框全部功能

浅谈React实现搜索匹配 search.html: search.js: var Search = React.createClass({ getInitialState: function() { return {lists: [], temp: []} }, update: function() { this.state.temp = 阅读详情

react 写的百度搜索框全部功能实现
先上效果图
在这里插入图片描述
1、获取数据用的axios ,没有用jsonp,jsonp下次写,脚手架需要下载axios。
2、需要跨域软件,自己在Google浏览器安装一个跨域软件。
3、需要事件onKeyDown,onKeyUp(键盘事件),onClick(鼠标点击跳转),onMouseMove(鼠标移入事件),
4,摁下上键(keyCode值为40)、下键(keyCode值为38)回车键(keyCode值为13)不能让搜索,40、38 需要改变搜索到数据渲染之后状态(和鼠标移入效果相同)13需要跳转页面(和鼠标点击跳转一下)。

时间仓促 css样就随便写了点,上代码!App.css

html,body,ul,ol{
    margin: 0;
    padding: 0;
    list-style: none;
}
input{
    width: 600px;
    height: 50px;
    position: relative;
    left: 50%;
    margin-left: -300px;
    top: 40px;
    font-size: 20px;
}
.one{
    width: 600px;
    position: relative;
    left: 50%;
    top: 40px;
    margin-left: -300px;
    border-left: 1px solid black;
    border-right: 1px solid black;

}
.one>li{
    border-bottom: 1px solid black;
    height: 50px;
    line-height: 50px;
}
.active{
    background: grey;
}

js代码 App.js

import React, { Component } from 'react';
import axios from 'axios';
import './App.css';


class App extends Component {
  constructor(...ags) {
    super(...ags);
    this.state = {
      arr: [],
      num:-1,
      oDefault:''
    }
  }
  
  HandoverValue = (id) =>{
    if(id === -1){
      this.refs['x'].value = this.state.oDefault;
      return;
    }
    
      this.refs['x'].value = this.state.arr[id]
  }
  openPage=()=>{
    console.log(this.state.num,this.state.arr.length)
    if(this.state.num === -1 || this.state.num >= this.state.arr.length){
      window.open(`https://www.baidu.com/s?wd=${this.state.oDefault}` )
      return;
    }
    window.open(`https://www.baidu.com/s?wd=${this.state.arr[this.state.num]}` )
  }
  add = (ev) => {
    let eve = ev;
    let oEvent = ev.keyCode;
    if (oEvent === 38 || oEvent === 13 || oEvent === 40) {
          if(oEvent === 13){
            this.openPage()
          }
        
      return;
    }
    this.setState({
      oDefault:ev.target.value
    })
    axios.get(`https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=${eve.target.value}`).then((res) => {
      let str = res.data;
      let str2 = str.slice(16, str.length - 1);
      this.setState({
        arr: [...eval(`(${str2})`).s]
      })
    })
  }
  onMove=(id)=>{
    this.setState({
      num:id
    })
    this.HandoverValue(id);
    
  }
  ofn=(event)=>{
    let oEvent = event.keyCode;
    if(oEvent == 40){
      let num = this.state.num;
      num++; 
      
      if(num > this.state.arr.length-1){
        this.setState({
          num:-1
        })
        this.HandoverValue(-1)
        return;
      }
      
        this.setState({
          num
        });
        this.HandoverValue(num)
    }
    if(oEvent == 38){
      let num = this.state.num;
      num--; 
      if(num < 0){
        this.setState({
          num:this.state.arr.length
        })
        this.HandoverValue(-1)
        return;
      }
        this.setState({
          num
        })
        
        this.HandoverValue(num)
    }
    
  }
  render() {
    let {arr,num} = this.state;
    return (
      <div className="App">
        <input type='text' ref='x' onKeyUp={(event) => this.add(event)} onKeyDown={(event)=>this.ofn(event)}></input>
          <ul className='one' style={{display:arr.length==0?'none':'block'}}>
              {
                arr.map((val,index)=>{
                      return <li key={index} className={num == index?'active':''} onClick={this.openPage} onMouseMove={()=>this.onMove(index)}>{val}</li>
                  })
              }
          </ul>
      </div>
    );
  }
}

export default App;

本文章为个人所写,并非转载,欢迎留言,我会尽快的回复,谢谢,时间太仓促了

React实战-如何在ReactJs中调用Google、Baidu地图 React实战-如何在ReactJs中调用Google、Baidu地图 在这个互联网时代,对地图的运用已经成为Web、移动各类应用的必选项。国内外各大地图应用提供商均有开放的Api供大家使用,当然更具使用的功能会提供付费版和免费版,如果仅仅只是小的应用或者练手,完全可以调用其免费版。调用的方式也很简单,跟你调用其他的第三方库类似。但是由于ReactJs的实现方式存在一些特殊性,其调用Google 阅读详情

相关推荐

react-native-baidu-map在react-native中的使用

转载请注明地址:http://write.blog.csdn.net/mdeditorgithub官网地址: https://github.com/lovebing/react-native-baidu-map下载方式: npm install react-native-baidu-map –save插件使用过程中需要配置的内容: 1,在项目的 android/settings.gradle

一水茶缘~~ 7703

React 实现 百度搜索框(简易)

App.js import React from 'react'; import './App.css'; //引入组件 import SearchBox from "./components/SearchBox"; class App extends React.Component{ render () { return ( <div className="App"> <SearchBox /> .

达拉崩巴斑得贝迪卜多比鲁翁_ 1604

react-react实现搜索框

react实现搜索框

react搜索框实现

react搜索框实现

L_H_study的博客 1486

React实现百度搜索框(简易版)

1. DOM结构如下 2. state里面需要存储的数据: 3. 函数处理 4. 细节处理:控制列表的可见性 如果说输入框没有值就不可见 在CSS中设置display

qq_43558459的博客 1146

React 简书项目实战【3】实现搜索框动画

核心代码。

小旺的博客 671

探索React Native的百度地图插件:react-native-baidu-map

是一个基于React Native框架的插件,旨在为移动应用开发者提供便捷地集成和操控百度地图的功能。这个项目允许你在iOS和Android平台上使用JavaScript编代码,即可实现与原生百度地图SDK的深度集成。 ## 技术分析 ### 核心特性 1. **丰富的API接口** - `react-native-baidu-map`提供了包括定位、标注、路线规划、热力图等一系列与百度

gitblog_00048的博客 1364

React实现最完整的百度搜索框

import React,{Component} from 'react' import ReactDOM,{render} from 'react-dom' import 'bootstrap/dist/css/bootstrap.min.css' // import PropTypes from 'prop-types'; import JSONP from 'js...

agg7911的博客 1305

React应用(基于React脚手架)

react 是前端三大框架中之一,而且大公司基本都在用react 包括百度也在使用 他有自己的独特的虚拟dom build-react-cli是帮助你快速创建生成react项目的脚手架工具,配置了多种可选择的不同类型项目模版。 1. xxx脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目 1. 包含了所有需要的配置(语法检查、jsx编译、devServer…) 2. 下载好了所有相关的依赖 3. 可以直接运行一个简单效果 2. react提供了一个用于创建react项目的脚手架库: crea

weixin_62897746的博客 2491

搜索的框框用html怎么,react如何搜索框

react如何搜索框react搜索框的思路:1、添加一个input框,为它绑定onChange事件2、在onChange事件中通过拼接url和input框的内容得到一个搜索链接;3、通过fetch-jsonp库的fetchJsonp方法请求链接,得到搜索的内容。代码如下:hover.css:* {margin: 0;padding: 0;}li.hover {background: #ccc...

weixin_30830643的博客 539

React百度地图开发

导入相关依赖 “@uiw/react-baidu-map”: “^1.2.1” cnpm install @uiw/react-baidu-map --save // 或 npm install @uiw/react-baidu-map --save 0.申请私钥 1.地图引入 Map 的父组件必须具有宽度和高度; import { Map, APILoader } from '@uiw/...

潘顾昌的博客 1169

React脚手架百度地图API的简单web使用

首先进入百度地图官网: 进入web开发的javaScript API:: 进图开发指南的Hello World示例: 然后就能看到API的简单使用了 使用步骤: 首先要有百度账号申请ak,点我申请就可以了 走2、 3、4步 第5步:引用百度地图API文件,在public的index.html文件中加入script标签,将第一步申请到的ak账号放进去 走第6 、7步 第八步:设置中心点坐...

liuyuhua666的博客 660

【亲测免费】 React-Baidu-Map 使用教程

React-Baidu-Map 使用教程 项目介绍 React-Baidu-Map 是一个基于 React 封装的百度地图组件,旨在帮助开发者轻松地将地图集成到 React 项目中。该项目提供了丰富的地图组件,能够满足大多数简单的业务场景需求。如果需要更复杂的功能或自定义地图组件,开发者可以使用 Map 组件返回的地图实例,完全自定义一个地图组件,并根据百度地图原生 API 进行开发。 项目快速启...

gitblog_00870的博客 1086

百度开源创建 React 项目脚手架 reSKRipt

前段时间在公司内部大会,有一位非常厉害的前端同学分享了一个创建 React 项目的脚手架工具 reSKRipt,今天按文档跑了下整个流程,确实不错,如果在团队内部能够结合自己的业务做一个类...

lefex的博客 962

WebStrom创建ReactJs项目

1.下载安装 WebStrom 可以在官网直接下载,也可以点击提供链接直接前往https://www.jetbrains.com/webstorm/具体破解方法核心就是一直下一步出现在需要选择地址的时候输入http://idea.codebeta.cn(填的地址不是超链接)2.下载NodeJS并安装可以在网上直接百度官网下载并安装即可,主要目的是为了安装和他一起下载并安装的NPM(包管理器)wi...

爪哇犀牛 1318

React Native 使用百度地图 react-native-baidu-map组件时遇到的问题

React Native 使用百度地图 react-native-baidu-map组件时遇到的问题 1、error: Redefinition of ‘RCTMethodInfo’ 解决:修改 react-native-baidu-map包文件 2、error: 解决:添加mapapi.bundle 3、error: 解决: ...

三七二十一的博客 3102

react-native-baidu-map使用及注意问题

使用组件: react-native-baidu-map 获取百度地图API_KEY 地址:http://lbsyun.baidu.com,在控制台成功创建应用后,就可以看到应用的api key了 安装 yarn add react-native-baidu-map 原生部分 Android配置 react-native link react-native-baidu-map 配置Andro...

wayne214的博客 1534

react native webview 百度地图_react-native-baidu-map使用及注意问题

使用组件:# **[react-native-baidu-map](lovebing/react-native-baidu-map)**## 获取百度地图API_KEY地址:百度地图开放平台 | 百度地图API SDK | 地图开发,在控制台成功创建应用后,就可以看到应用的api key了![image.png](https://upload-images.jianshu.io/upload_im...

weixin_33205138的博客 562
上一篇: 原生js写的九宫格随机位置的照片墙
下一篇: jq版的九宫格拖拽换位置和随机位置(照片墙的拖拽换位置和随机位置)
Absolon_
博客等级 码龄8年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值