Взаимодействие функций

     let test = (o) => {
        console.log(o);
 }
    
    function LeftMainNav(){
        let [open, setOpen] = useState(false);
    }

как можно из test изменить значение setOpen на true?


Ответы (1 шт):

Автор решения: Konstantin Modin

Если мы имеем дело с Реакт, можно сделать так: в <LeftMainNav/> рендерим компонент <Test/> в props которого передаём setOpen. Далее в компоненте <Test/> зызываем setOpen в функции test которая вызывается при нажатии кнопки.

import React, { useState } from "react";

function LeftMainNav() {
  let [open, setOpen] = useState(false);

  return (
    <div>
      <h4>LeftMainNav</h4>
      <h3>Open is: {open.toString()}</h3>
      <Test setOpen={setOpen} />
    </div>
  );
}
export default LeftMainNav;

const Test = ({ setOpen }) => {
  let test = (o) => {
    setOpen(true);
    console.log(o);
  };
  return <button onClick={test}>Run test function</button>;
};

Чтобы open менялся с false на true и обратно можно написать так:

let test = (o) => {
  setOpen((open) => !open);
  console.log(o);
}; 
→ Ссылка