当前位置:网站首页>组件通信--下拉菜单案例
组件通信--下拉菜单案例
2022-08-03 16:22:00 【是张鱼小丸子鸭】
如下所示,我们拆分两个组件,我们点击list组件中的数据,填充到输入框中,默认list数据隐藏
app.js文件
拆分两个组件,并分别引入两个组件
import React, { Component } from 'react';
import './App.css';
import Inp from './component/Inp';
import List from './component/List.js';
export default class App extends Component {
constructor(){
super()
this.state={
list: ['12k-15k', '15k-18k', '18k-22k', '22k-15k', '25k以上'],
val: "",
flag: false
}
}
changeFlag = () => {
this.setState({
flag: !this.state.flag,
})
}
setVal = (value) => {
this.setState({
val: value,
})
this.changeFlag();
}
render() {
let { list, val, flag } = this.state;
return (
<div className='app'>
<Inp val={val} changeFlag={this.changeFlag}></Inp>
<List list={list} setVal={this.setVal} flag={flag}></List>
</div>
)
}
}
inp组件
inp框拆分到到子组件后,需要传递val值,【父传子】
传递点击文本框切换列表显示的函数【子传父】
import React from 'react'
export default function Inp(props) {
return (
<div>
<input placeholder='你的期望薪资是多少' onClick={props.changeFlag} value={props.val} readOnly />
</div>
)
}
list组件
flag的值传递,控制显示隐藏 【父传子】
list数据渲染列表数据 【父传子】
点击切换列表显示事件的传递 【子传父】
import React from 'react'
export default function List(props) {
let {list,flag}=props
return (
<div>
{
flag ?
(
<ul className='ul'>
{
list.map((item, index) => {
return (
<li onClick={() => props.setVal(item)} key={index}>{item}</li>
)
})
}
</ul>
)
:
<></>
}
</div>
)
}
边栏推荐
猜你喜欢
随机推荐
MySQL相关介绍
MySQL窗口函数 OVER()函数介绍
Kubernetes 笔记 / 任务 / 管理集群 / 用 kubeadm 管理集群 / 配置一个 cgroup 驱动
C专家编程 第1章 C:穿越时空的迷雾 1.10 “安静的改变”究竟有多少安静
SwinIR实战:详细记录SwinIR的训练过程
Yuan xiaolin: Volvo focus on travel security, and put it perfectly
攻防世界----bug
leetcode SVM
C专家编程 第3章 分析C语言的声明 3.7 typedef struct foo{... foo;}的含义
spark入门学习-1
STM32的HAL和LL库区别和性能对比
WordPress建站技术笔记
uniapp隐藏导航栏和横屏显示设置
纯纯粹粹纯纯粹粹
DataGrip数据仓库工具
托尔斯泰:生活中只有两种不幸
C专家编程 第2章 这不是Bug,而是语言特性 2.2 多做之过
TCP 可靠吗?为什么?
C专家编程 第3章 分析C语言的声明 3.8 理解所有分析过程的代码段
window.open does not show favicon.icon