jvfd3 / timetabling-UENF

0 stars 0 forks source link

fazer com que os conjuntos de itens sejam atualizados em um useEffect #151

Closed jvfd3 closed 10 months ago

jvfd3 commented 11 months ago

Sinto que em alguns casos, eu estou passando os setConjuntos para os componentes e lá atualizando o conjunto grande. Mas isso só deveria ser atualizado dentro do componente pai com um useEffect lendo mudanças no item. Talvez sendo até específico para cada um dos itens.

Image

jvfd3 commented 10 months ago

Não entendi direito o que era pra fazer, provavelmente era pra que no componente filho usasse um useEffect que lesse um valor externo a ser alterado. Suponho que isso esteja sendo feito aqui:

function DefaultSelect(defaultProps) {
  const {
    placeHolderText,
    isClearable,
    options,
    setOuterValue,
    value,
    findCorrectObject,
    customProps,
  } = defaultProps;

  const [currentValue, setCurrentValue] = useState(value);

  function updateOuterValue(newValue) {
    setCurrentValue(newValue);
    setOuterValue(newValue);
  }

  useEffect(() => {
    const correctObject = findCorrectObject ? findCorrectObject(value) : value;
    // console.log(value);
    setCurrentValue(correctObject);
  }, [value]);

  return (
    <Select
      placeholder={placeHolderText}
      isClearable={isClearable}
      options={options}
      onChange={updateOuterValue}
      value={currentValue}
      {...customProps}
      className="mySelectList"
      styles={styleWidthFix}
    />
  );
}

Dito isso, parece resolvido, após um refactor enorme dos selects

jvfd3 commented 10 months ago

O problema que ocorria era que, caso eu alterasse um item externo, tipo o professor selecionado, os selects das suas informações não eram alterados pois eles tinham um estado interno.