Задать вопрос
@SuperProshka

Почему не обновляется state в react useState?

Добрый день!
У меня есть простой компонент на react реализующий selector
interface SelectorCompProps {
  innerContent: any;
  onClick?: () => void;
  options?: SelectorListItem[];
  itemClick?: (item: SelectorListItem) => void;
  isMinor: boolean;
}


export const SelectorComp: FC<SelectorCompProps> = ({innerContent, onClick, itemClick, options, isMinor}) => {


    let [isOpened, setIsOpened] = useState(true);

    let selectorClick = function() {
        setIsOpened(true);
    }

    let closeList = function() {
        console.log("set false");
        setIsOpened(false);
    }

    console.log(isOpened);
    
    return <div className={style.container} onClick={selectorClick}>
        <div className={jc([style.selector, isMinor ? style.selectorMinor : ""])}>
            <div className={style.selectorName}>
                <div className={style.selectorNameWrap} dangerouslySetInnerHTML={{"__html": innerContent}}></div>
            </div>
            <div className={style.selectorMore}>
                <svg width="10" height="10" viewBox="0 0 8 7" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="8" height="7" transform="matrix(-1 0 0 -1 8 7)" fill="white"></rect><path fill-rule="evenodd" clip-rule="evenodd" d="M6.89674 2.30186L4.64759 5.59192C4.37531 6.10402 3.72453 6.13414 3.40772 5.68229L1.10326 2.30186C0.8117 1.75352 1.17222 1.0649 1.75085 1.0649L6.24915 1.0649C6.82778 1.0649 7.1883 1.75352 6.89674 2.30186Z" fill="#6F7780"></path></svg>
            </div>
        </div>
        {isOpened && <SelectorListComp items={options!} onClick={closeList} closeList={closeList}></SelectorListComp>}
    </div>
}


Открытие селектора работает корректно, но закрытие не работает.
При вызове функция closeList меняет isOpened, но при последующей отрисовке isOpened опять true
Подскажите пожалуйста, в чем проблема
  • Вопрос задан
  • 65 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@SuperProshka Автор вопроса
Нашел проблему.
isOpened менялся правильно, но потом менялся обратно из-за onClick не на том div
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы