最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React實現(xiàn)二級聯(lián)動的方法

 更新時間:2021年09月10日 09:50:31   作者:暴走的奶糖  
這篇文章主要為大家詳細(xì)介紹了React實現(xiàn)二級聯(lián)動的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了React實現(xiàn)二級聯(lián)動的具體代碼,供大家參考,具體內(nèi)容如下

實現(xiàn)效果: 普通h5頁,圖片我進(jìn)行了裁剪,把用戶那部分刪掉了,不過也不影響說明

大體思路就是把數(shù)據(jù)接口從頁面?zhèn)鹘o組件,交互在組件內(nèi)執(zhí)行后,通過onTimeChange將選擇的數(shù)據(jù)結(jié)果返回給頁面,然后展示到頁面上。
我用Taro寫的,語法和react一樣。

小程序效果

好久以前的一個方法,給大家發(fā)下實現(xiàn)代碼:

1、頁面里有一個選擇時間的彈框模塊

 {this.state.isToggleOn && (
    <Panel
        onTimeChange={this.onTimeChange}
        onClick={this.closeMask}
        list={this.state.timeList} //接口數(shù)據(jù)
        status={this.state.status} //當(dāng)前商品狀態(tài),可以不加
     />
   )}

2、彈框里

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

export default class Panel extends Component {
  constructor(props) {
    super(props);
  }

  static defaultProps = {
    list: [],
    status: ""
  };

  onClick() {
    this.props.onClick();
  }

  onTimeChange(date, time) {
    this.props.onTimeChange(date, time);
  }

  render() {
    return (
      <View className="panel-modal">
        <SendTime
          list={this.props.list}
          onClick={this.onClick}
          onTimeChange={this.onTimeChange}
          status={this.props.status}
        />
      </View>
    );
  }
}

3、time組件里

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

let dateNum = 0,
  timeNum = 0;
export default class SendTime extends Component {
  constructor(props) {
    super(props);

    this.state = {
      dateNum: dateNum,
      timeNum: timeNum,
      timeList: [],
    };
  }

  static defaultProps = {
    list: [],
  };

  onClick() {
    this.props.onClick();
  }

  switchDay(index, info) {
    this.setState({
      dateNum: index,
    });
    dateNum = index;
    this.switchTime(timeNum);
    let date = info ? info.date : "";
    let time = info && info.timeSegementList ? info.timeSegementList[0] : "";
    this.setState({
      timeList: info.timeSegementList,
    });
    this.onTimeChange(date, time);
  }

  switchTime(index) {
    let dateNum = this.state.dateNum;
    this.setState({
      timeNum: index,
    });
    timeNum = index;
    let date = this.props.list[dateNum] ? this.props.list[dateNum].date : "";
    let time = this.props.list[dateNum]
      ? this.props.list[dateNum].timeSegementList[index]
      : "";
    if (index != 0) {
      this.onTimeChange(date, time);
    }
  }

  onTimeChange(date, time) {
    this.props.onTimeChange(date, time);
  }

  componentWillMount() {
    this.setState({
      timeList: ["成團(tuán)后立即發(fā)貨"],
    });
  }

  componentDidMount() {
    if (this.props.status) {
      this.switchDay(dateNum, this.props.list[dateNum]);
    } else {
      (dateNum = 0), (timeNum = 0);
      this.setState(
        {
          dataNum: 0,
          timeNum: 0,
        },
        () => {
          this.switchDay(0, this.props.list[0]);
        }
      );
    }
  }

  getClassName(index) {
    switch (index) {
      case this.state.dateNum:
        return "send-data-li current";
      default:
        return "send-data-li";
    }
  }

  render() {
    return (
      <View>
        <View className="send-time-title" onClick={this.onClick}>
          <Text>送達(dá)時間</Text>
          <View className="close" />
        </View>
        <View className="send-time-cont">
          <View className="send-date-list">
            {this.props.list.map((info, index) => (
              <View
                key={index}
                className={
                  index === this.state.dateNum
                    ? "send-data-li current"
                    : "send-data-li"
                }
                onClick={this.switchDay.bind(this, index, info)}
              >
                <Text className="txt">{info ? info.date : ""}</Text>
              </View>
            ))}
          </View>
          <View className="send-r-time">
            {this.state.timeList.map((info, index) => (
              <View
                key={index}
                className={
                  index === this.state.timeNum
                    ? "send-r-li current"
                    : "send-r-li"
                }
                onClick={this.switchTime.bind(this, index)}
              >
                <View class="send-r-flex">
                  <Text class="txt">{info}</Text>
                  <Image
                    className="blue-ok"
                    src={imageList.blueOk}
                    mode={"aspectFit"}
                    lazy-load={true}
                  />
                </View>
              </View>
            ))}
          </View>
        </View>
      </View>
    );
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • React如何使用create-react-app創(chuàng)建react項目

    React如何使用create-react-app創(chuàng)建react項目

    這篇文章主要介紹了React如何使用create-react-app創(chuàng)建react項目問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • react中使用better-scroll滾動插件的實現(xiàn)示例

    react中使用better-scroll滾動插件的實現(xiàn)示例

    滾動在很多地方都可以使用,本文主要介紹了react中使用better-scroll滾動插件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • React用法之高階組件的用法詳解

    React用法之高階組件的用法詳解

    高階組件也就是我們常說的HOC,是React中用于復(fù)用組件邏輯的一種高級技巧。這篇文章主要通過一些示例帶大家學(xué)習(xí)一下高階組件的使用,希望對大家有所幫助
    2023-04-04
  • react實現(xiàn)同頁面三級跳轉(zhuǎn)路由布局

    react實現(xiàn)同頁面三級跳轉(zhuǎn)路由布局

    這篇文章主要為大家詳細(xì)介紹了react實現(xiàn)同頁面三級跳轉(zhuǎn)路由布局,一個路由小案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • create-react-app 修改為多入口編譯的方法

    create-react-app 修改為多入口編譯的方法

    這篇文章主要介紹了create-react-app 修改為多入口編譯的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • React路由封裝的實現(xiàn)淺析

    React路由封裝的實現(xiàn)淺析

    路由是React項目中相當(dāng)重要的概念,對于功能較為復(fù)雜的網(wǎng)頁來說,必然會涉及到不同功能間的頁面跳轉(zhuǎn),本篇文章將對React官方維護(hù)的路由庫React-Router-Dom的使用和常用組件進(jìn)行講解,同時對路由組件傳遞param參數(shù)的方式進(jìn)行講解,希望對各位讀者有所參考
    2022-08-08
  • 詳解React?ISR如何實現(xiàn)Demo

    詳解React?ISR如何實現(xiàn)Demo

    這篇文章主要為大家介紹了React?ISR如何實現(xiàn)Demo詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 淺談React Native 傳參的幾種方式(小結(jié))

    淺談React Native 傳參的幾種方式(小結(jié))

    這篇文章主要介紹了淺談React Native 傳參的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • antd form表單如何處理自定義組件

    antd form表單如何處理自定義組件

    這篇文章主要介紹了antd form表單如何處理自定義組件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • react-router?v6實現(xiàn)權(quán)限管理+自動替換頁面標(biāo)題的案例

    react-router?v6實現(xiàn)權(quán)限管理+自動替換頁面標(biāo)題的案例

    這篇文章主要介紹了react-router?v6實現(xiàn)權(quán)限管理+自動替換頁面標(biāo)題,這次項目是有三種權(quán)限,分別是用戶,商家以及管理員,這次寫的權(quán)限管理是高級權(quán)限能訪問低級權(quán)限的所有頁面,但是低級權(quán)限不能訪問高級權(quán)限的頁面,需要的朋友可以參考下
    2023-05-05

最新評論

兴海县| 吉安县| 萝北县| 新兴县| 宾川县| 仁寿县| 咸丰县| 高唐县| 黄龙县| 芒康县| 松江区| 巴东县| 威远县| 霍城县| 双牌县| 措勤县| 阿巴嘎旗| 河西区| 太康县| 岳阳县| 磐石市| 邵阳市| 兴业县| 高淳县| 吴忠市| 庆城县| 西昌市| 新邵县| 青冈县| 富裕县| 瓮安县| 剑河县| 湖南省| 广德县| 平江县| 沙湾县| 项城市| 泗洪县| 连平县| 鹿泉市| 沈阳市|