Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

268
Views
El atributo no se guarda en Gutenberg

Estoy tratando de crear un bloque personalizado para Wordpress Gutenberg.

Tengo los siguientes atributos:

 "icon": { "type": "object", "source": "html", "selector": ".jig_defbox-icon" }, "color": { "type": "string", "default": "#919191" }

En mi EditJS, trato de almacenar valores de un selector de color y un grupo de radio en estos atributos.

 const [ toggled, setToggled ] = useState( ); return( <InspectorControls> <ColorPalette colors={[ {name: 'lightgray', color: '#d8d8d8'}, {name: 'darkgray', color: '#919191'}, {name: 'red', color: '#dc1a22'} ]} disableCustomColors={true} onChange={(value) => {props.setAttributes({color: value});}} value={props.attributes.color} clearable={false} /> <RadioGroup onChange={ (value) => {setToggled(value);props.setAttributes({icon: value});} } checked={props.attributes.icon} > { str_array.map( item => ( <Radio value={item}><Icon icon={icon_getter(item);}/></Radio>) ) } </RadioGroup> </InspectorControls> )

En mi SaveJS, trato de representar mi marcado de acuerdo con estos atributos:

 const {attributes} = props <div style={{"fill": attributes.color}}> <Icon icon={icon_getter(attributes.icon)}/> </div>

El objetivo es representar un icono svg de acuerdo con la selección en mi grupo de radio.

Problema 1: cada nueva sesión de edición en el backend, la selección de mi grupo de radio desaparece, incluso con useState (intenté sin useState primero)

Problema 2: cada nueva sesión de edición, se registra un error de consola que dice que el marcado posterior al cuerpo no coincide con el marcado devuelto por la función de guardar, porque el marcado de guardado no contiene el contenido del atributo del icono

En la medida en que pude encerrar el problema, el atributo del icono no se guardó correctamente. Traté de guardar la "clave" para el ícono como una cadena y un objeto. Si registro el valor en la función de guardar, está vacío, mientras que el color seleccionado funciona como se esperaba, tanto en el frontend como en el backend.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Pude solucionarlo al repensar mi concepto de buscar el ícono.

Aparentemente, Gutenberg intentó almacenar el código del ícono en la base de datos, pero no la clave. Al cargar el editor de fondo, la función icon_getter recibió un valor nulo, por lo tanto, la diferencia entre el cuerpo de la publicación y el código de la función de guardado.

Cambié mi editJS:

 <RadioGroup onChange={ (value) => {props.setAttributes({icon: value});} } checked={props.attributes.icon} > { my_icons_as_list.map( item => ( <Radio value={item}><Icon icon={my_icons[props.attributes.icon];}/></Radio>) ) } </RadioGroup>

y mi saveJS:

 <Icon icon={ my_icons[ attributes.icon ] } />
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!