React 二级联动的实现方法

本文介绍如何在React或Taro中实现二级联动的效果。通过将数据接口传递给组件,组件内部处理交互,并通过onTimeChange事件将选定的数据回传给父页面进行显示。文中提供了一个较早前的实现代码示例,适用于普通H5页面及小程序。
摘要由CSDN通过智能技术生成

实现效果: 普通h5页,图片我进行了裁剪,把用户那部分删掉了,不过也不影响说明

大体思路就是把数据接口从页面传给组件,交互在组件内执行后,通过onTimeChange将选择的数据结果返回给页面,然后展示到页面上。
我用Taro写的,语法和react一样。
在这里插入图片描述
小程序效果
在这里插入图片描述
好久以前的一个方法,给大家发下实现代码:

1、页面里有一个选择时间的弹框模块

 {this.state.isToggleOn && (
    <Panel
	       onTimeChange={this.onTimeChange}
	       onClick={this.closeMask}
	       list={this.state.timeList} //接口数据
	       status={this.state.status} //当前商品状态,可以不加
     />
   )}

2、弹框里

import { Component } from "@tarojs/taro";
import { View, Text } from "@tarojs/components";
import SendTime from "../time";
import "./index.scss";

ex
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的React实现四级的例子: ```jsx import React, { useState } from "react"; const options = { "浙江省": { "杭州市": { "西湖区": ["西湖街道", "灵隐街道"], "上城区": ["中山北路街道", "南星街道"] }, "宁波市": { "海曙区": ["中山东路街道", "白云街道"], "江东区": ["庄桥街道", "七塘街道"] } }, "江苏省": { "南京市": { "玄武区": ["梅园新村街道", "红山街道"], "秦淮区": ["夫子庙街道", "集庆门街道"] }, "苏州市": { "姑苏区": ["虎丘街道", "石路街道"], "吴中区": ["香山街道", "越溪街道"] } } }; function Cascader() { const [province, setProvince] = useState("浙江省"); const [city, setCity] = useState("杭州市"); const [district, setDistrict] = useState("西湖区"); const [street, setStreet] = useState("西湖街道"); const handleProvinceChange = (e) => { setProvince(e.target.value); setCity(Object.keys(options[e.target.value])[0]); setDistrict(Object.keys(options[e.target.value][Object.keys(options[e.target.value])[0]])[0]); setStreet(options[e.target.value][Object.keys(options[e.target.value])[0]][Object.keys(options[e.target.value][Object.keys(options[e.target.value])[0]])[0]][0]); }; const handleCityChange = (e) => { setCity(e.target.value); setDistrict(Object.keys(options[province][e.target.value])[0]); setStreet(options[province][e.target.value][Object.keys(options[province][e.target.value])[0]][0]); }; const handleDistrictChange = (e) => { setDistrict(e.target.value); setStreet(options[province][city][e.target.value][0]); }; const handleStreetChange = (e) => { setStreet(e.target.value); }; return ( <div> <select value={province} onChange={handleProvinceChange}> {Object.keys(options).map((option) => ( <option key={option} value={option}> {option} </option> ))} </select> <select value={city} onChange={handleCityChange}> {Object.keys(options[province]).map((option) => ( <option key={option} value={option}> {option} </option> ))} </select> <select value={district} onChange={handleDistrictChange}> {Object.keys(options[province][city]).map((option) => ( <option key={option} value={option}> {option} </option> ))} </select> <select value={street} onChange={handleStreetChange}> {options[province][city][district].map((option) => ( <option key={option} value={option}> {option} </option> ))} </select> </div> ); } export default Cascader; ``` 在这个例子中,我们使用了`useState`来管理四个状态:`province`、`city`、`district`和`street`,分别代表省、市、区和街道。我们通过`select`元素来实现四级,每一级的选项都是根据上一级的选项来态生成的。 当省份选项发生改变时,我们需要根据选中的省份来态生成城市选项,同时也需要把城市、区和街道的选项重置为默认值。当城市选项发生改变时,我们需要根据选中的城市来态生成区选项,并重置街道选项为默认值。当区选项发生改变时,我们需要根据选中的区来态生成街道选项。当街道选项发生改变时,我们只需要更新`street`状态的值即可。 上述代码只是一个简单的例子,实际情况下可能会更加复杂。但是原理是相同的:通过状态来实现四级,根据当前选中的选项来态生成下一级选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值