关于ul调用监听

来源:1-1 react中的组件(1)

weixin_慕圣6334738

2021-07-07 10:29:55

http://img.mukewang.com/climg/60e50ff109df7b5e07860913.jpg

图片1

http://img.mukewang.com/climg/60e5100409d359fc03330110.jpg

图片2

http://img.mukewang.com/climg/60e510af09e6868604460168.jpg

图片3


老师你好上述代码是我练习编写一个搜索框图片3的react代码, 图1橙色的框子是一个搜索的结果放在ul标签里面我在ul标签上面添加了一个onclick监听希望点击某个搜索的结果然后进行跳转但是当我点击图3中红色的Data Analyst li标签的时候handleClick的方程并没有被触发我不明白为什么当我把onclick放在li而不是ul上时handleClick的方程也没有被触发。我需要怎么做呢

写回答

1回答

好帮手慕久久

2021-07-07

同学你好,实现思路是对的。按照同学的描述,老师简单还原了一下你的代码,将事件绑定在ul上,可以触发事件。代码如下:

index.js:

import React, { Component } from 'react';

import ReactDOM from 'react-dom';

import "./style.css";

class App extends Component {

    constructor(props) {

        super(props);

        this.state={

           searchResult:[],

           onSearch:false

        }

    }

    // 将输入的内容,当成搜索结果

    handleDisplayResult(e){

     let list=this.state.searchResult;

     list.push(e.target.value)

     setTimeout(()=>{

        this.setState({

            searchResult:list,

            onSearch:true

         })

     },1000)

    }

    // 点击ul的时候,能触发事件,并拿到id

    handleClick(e){

        console.log("跳转页面,id是:",e.target.getAttribute("data-index"));

    }

    render() {

        const {searchResult}=this.state

        return (

            <div>

              <input placeholder="请输入内容" onKeyUp={(e)=>this.handleDisplayResult(e)}/>

              <ul className={this.state.onSearch?"show":"hide"} onClick={(e)=>this.handleClick(e)}>

                  {

                      searchResult.map((item,index)=>(<li data-index={index} key={index}>{item}</li>))

                  }

              </ul>

            </div>

        )

    }


}

ReactDOM.render(

    <App />,

    document.getElementById('root')

);


style.css:

.hide{

  display: none;

}


.show{

  display: block;

}

效果如下:

http://img.mukewang.com/climg/60e523120ad7416609990474.jpg

建议同学参考老师的示例,对照一下自己的代码,看哪里写的不合适。

祝学习愉快!

0

0 学习 · 15276 问题

查看课程