React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)的方法
本文實(shí)例為大家分享了React實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)的具體代碼,供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)效果: 普通h5頁,圖片我進(jìn)行了裁剪,把用戶那部分刪掉了,不過也不影響說明
大體思路就是把數(shù)據(jù)接口從頁面?zhèn)鹘o組件,交互在組件內(nèi)執(zhí)行后,通過onTimeChange將選擇的數(shù)據(jù)結(jié)果返回給頁面,然后展示到頁面上。
我用Taro寫的,語法和react一樣。

小程序效果

好久以前的一個(gè)方法,給大家發(fā)下實(shí)現(xiàn)代碼:
1、頁面里有一個(gè)選擇時(shí)間的彈框模塊
{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á)時(shí)間</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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
React如何使用create-react-app創(chuàng)建react項(xiàng)目
這篇文章主要介紹了React如何使用create-react-app創(chuàng)建react項(xiàng)目問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
react中使用better-scroll滾動(dòng)插件的實(shí)現(xiàn)示例
滾動(dòng)在很多地方都可以使用,本文主要介紹了react中使用better-scroll滾動(dòng)插件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
react實(shí)現(xiàn)同頁面三級(jí)跳轉(zhuǎn)路由布局
這篇文章主要為大家詳細(xì)介紹了react實(shí)現(xiàn)同頁面三級(jí)跳轉(zhuǎn)路由布局,一個(gè)路由小案例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
詳解React?ISR如何實(shí)現(xiàn)Demo
這篇文章主要為大家介紹了React?ISR如何實(shí)現(xiàn)Demo詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
淺談React Native 傳參的幾種方式(小結(jié))
這篇文章主要介紹了淺談React Native 傳參的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
react-router?v6實(shí)現(xiàn)權(quán)限管理+自動(dòng)替換頁面標(biāo)題的案例
這篇文章主要介紹了react-router?v6實(shí)現(xiàn)權(quán)限管理+自動(dòng)替換頁面標(biāo)題,這次項(xiàng)目是有三種權(quán)限,分別是用戶,商家以及管理員,這次寫的權(quán)限管理是高級(jí)權(quán)限能訪問低級(jí)權(quán)限的所有頁面,但是低級(jí)權(quán)限不能訪問高級(jí)權(quán)限的頁面,需要的朋友可以參考下2023-05-05

