Opciones personalizadas de React Suite Cascader

React Suite es una biblioteca front-end diseñada para la plataforma intermedia y los productos back-end. El componente React Suite Cascader se utiliza como una única selección de datos con una estructura de relación jerárquica.

Sintaxis:

<Cascader renderMenu={}  
    renderMenuItem={}  
    renderValue={}
/>

Requisito previo:

Creación de la aplicación React y la instalación del módulo:

Paso 1: cree la carpeta del proyecto de reacción, para eso abra la terminal y escriba el comando npm create-react-app folder name, si ya instaló create-react-app globalmente. Si no lo ha hecho, instale create-react-app globalmente usando el comando npm -g create-react-app o instálelo localmente con npm i create-react-app .

npm create-react-app project

Paso 2: después de crear la carpeta de su proyecto (es decir, proyecto), muévase a ella usando el siguiente comando.

cd project

Paso 3: Ahora instala la dependencia usando el siguiente comando:

npm install rsuite

Estructura del proyecto: Se verá así:

 

Ejemplo 1: estamos importando el componente Cascader desde » rsuite «, LocationIcon desde «@rsuite/icons/Location» y aplicando los estilos predeterminados de los componentes que estamos importando «rsuite/dist/rsuite.min.css» .

Al componente Cascader, estamos pasando una lista llamada datos que contiene los nombres de los países a la propiedad de datos del componente y algunos estilos en línea. Estamos creando una lista nombrada como un nombre. Ahora, al renderMenuItem , le estamos pasando la etiqueta en las etiquetas <em> , para el renderValue , mostramos el icono de ubicación junto con el valor, y para el renderMenu , mostramos los nombres del nombre de la lista en cualquier índice, representado por la capa. (0,1,2) y luego mostrando el menú.

App.js

import { Cascader } from "rsuite";
import "rsuite/dist/rsuite.min.css";
import LocationIcon from "@rsuite/icons/Location";
  
function App() {
    const countries = [
        {
            label: "India",
            value: "India",
            children: [
                {
                    label: "Haryana",
                    value: "Haryana",
                },
                {
                    label: "Assam",
                    value: "Assam",
                    children: [
                        {
                            label: "Darrang",
                            value: "Darrang",
                        },
                        {
                            label: "Dhemaji",
                            value: "Dhemaji",
                        },
                    ],
                },
                {
                    label: "West Bengal",
                    value: "West Bengal",
                    children: [
                        {
                            label: "Hooghly",
                            value: "Hooghly",
                        },
                        {
                            label: "Darjeeling",
                            value: "Darjeeling",
                        },
                    ],
                },
                {
                    label: "Nagaland",
                    value: "Nagaland",
                },
            ],
        },
        {
            label: "Germany",
            value: "Germany",
        },
        {
            label: "Sri Lanka",
            value: "Sri Lanka",
        },
    ];
  
    const name = ["Country", "State", "District"];
    return (
        <div className="App">
            <h4> React Suite Cascader Custom options</h4>
  
            <Cascader
                data={countries}
                style={{ marginLeft: 80, marginTop: 10 }}
                renderMenuItem={(label) => {
                    return (
                        <div>
                            <em>{label}</em>
                        </div>
                    );
                }}
                renderValue={(value) => {
                    return (
                        <b>
                            <LocationIcon />
                            {value}
                        </b>
                    );
                }}
                renderMenu={(children, menu, parentNode, layer) => {
                    return (
                        <div>
                            <div
                                style={{
                                    background: "green",
                                    border: "2px solid #34382e",
                                    padding: "4px",
                                    color: "white",
                                    textAlign: "center",
                                }}
                            >
                                {name[layer]}
                            </div>
                            {menu}
                        </div>
                    );
                }}
            />
        </div>
    );
}
  
export default App;

Paso para ejecutar la aplicación: ejecute la aplicación con el siguiente comando desde el directorio raíz del proyecto.

npm start

Producción:

 

Ejemplo 2: estamos importando el componente Cascader de «rsuite», LocationIcon de «@rsuite/icons/Location», CheckIcon de «@rsuite/icons/Check», PageEndIcon de «@rsuite/icons/PageEnd» y aplicando el valor predeterminado estilos de los componentes que estamos importando “rsuite/dist/rsuite.min.css”.

Al componente Cascader, estamos pasando una lista llamada datos que contiene los nombres de los países a la propiedad de datos del componente y algunos estilos en línea. Ahora, al renderMenuItem, estamos pasando la etiqueta en las etiquetas <em> junto con CheckIcon, para el renderValue estamos mostrando el ícono de ubicación junto con el valor de activeLabel uniéndose usando ‘-‘, y para renderMenu estamos mostrando la capa (0,1,2) y luego mostramos el menú.

App.js

import { Cascader } from "rsuite";
import "rsuite/dist/rsuite.min.css";
import LocationIcon from "@rsuite/icons/Location";
import CheckIcon from "@rsuite/icons/Check";
import PageEndIcon from "@rsuite/icons/PageEnd";
function App() {
    const countries = [
        {
            label: "India",
            value: "India",
            children: [
                {
                    label: "Haryana",
                    value: "Haryana",
                },
                {
                    label: "Assam",
                    value: "Assam",
                    children: [
                        {
                            label: "Darrang",
                            value: "Darrang",
                        },
                        {
                            label: "Dhemaji",
                            value: "Dhemaji",
                        },
                    ],
                },
                {
                    label: "West Bengal",
                    value: "West Bengal",
                    children: [
                        {
                            label: "Hooghly",
                            value: "Hooghly",
                        },
                        {
                            label: "Darjeeling",
                            value: "Darjeeling",
                        },
                    ],
                },
                {
                    label: "Nagaland",
                    value: "Nagaland",
                },
            ],
        },
        {
            label: "Germany",
            value: "Germany",
        },
        {
            label: "Sri Lanka",
            value: "Sri Lanka",
        },
    ];
  
  
    return (
        <div className="App">
            <h4> React Suite Cascader Custom options</h4>
            <Cascader
                data={countries}
                style={{ marginLeft: 80, marginTop: 10 }}
                renderMenuItem={(label) => {
                    return (
                        <div>
                            <em>
                                <CheckIcon style={{ color: "green" }} />
  
                                {label}
                            </em>
                        </div>
                    );
                }}
                renderValue={(value, activeItemLabel) => {
                    return (
                        <b style={{ color: "black" }}>
                            <LocationIcon />
                            {activeItemLabel.map(
                                (item) => item.label).join(" - ")}
                        </b>
                    );
                }}
                renderMenu={(children, menu, parentNode, layer) => {
                    return (
                        <div>
                            <div
                                style={{
                                    background: "#D5073F",
                                    border: "2px solid #34382e",
                                    padding: "4px",
                                    color: "white",
                                    textAlign: "center",
                                }}
                            >
                                Layer :{layer}
                            </div>
                            {menu}
                        </div>
                    );
                }}
            />
        </div>
    );
}
  
export default App;

Paso para ejecutar la aplicación: ejecute la aplicación con el siguiente comando desde el directorio raíz del proyecto.

npm start

Producción:

 

Referencia: https://rsuitejs.com/components/cascader/#custom-options

Publicación traducida automáticamente

Artículo escrito por aniluom y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *