Здесь я использую useState, чтобы установить состояние «непригодный» на false в качестве начального const [state, setState] = React.useState ({unelhibited: false,}), тогда здесь я пишу функцию для установки ...

0
mai mohamed 23 Янв 2021 в 22:15

4 ответа

Лучший ответ

Вам не нужно создавать функцию для изменения состояния

const [eligible,setEligible] = React.useState(
false  // default value
)

Чтобы обновить состояние состояния

setEligible(true)
0
Fahad Tahir 23 Янв 2021 в 19:18

У меня сложилось впечатление, что вы прочитали два разных подхода к реагированию и смешали их в своем коде: старый, основанный на классах (без хуков, но с явным состоянием), и основанный на хуке. С хуками у вас действительно нет состояния, и, как указал Фахад, вы можете просто напрямую устанавливать отдельные (состояния) переменные. Если вы хотите сохранить имеющийся у вас объект, вам нужно:

function setEligibility() { 
   setState({uneligible: true});
}
0
Christian Fritz 23 Янв 2021 в 19:20

state.uneligible==='true' - это условие, а не присвоение.

Вы должны изменить следующую строку:

function setEligibility(){state.uneligible==='true'}

К

function setEligibility(){state.uneligible = 'true'}
0
jzProg 23 Янв 2021 в 19:30

Вы объявляете имя переменной состояния как состояние, что не является хорошей практикой и также может вызвать ошибку ключевого слова. Вместо этого используйте имя переменной как подходящую.

Определите состояние следующим образом:

const [uneligible, setUneligible] = React.useState(false);

Условие для его установки изменится на следующее:

var split_dob = dateOfBirth.split('-');
var dob_asdate = new Date(split_dob[0], split_dob[1], split_dob[2]);
var today = new Date();
var mili_dif = Math.abs(today.getTime() - dob_asdate.getTime());
var age = mili_dif / (1000 * 3600 * 24 * 365.25);
if (age < 18) {
  setUneligible(true);
}

Если для Uneligibile установлено значение false, вы визуализируете пустую сетку, что не кажется нормальным. Скорее:

if (uneligible) {
  return (
    <Grid item xs={8} style={{ marginTop: '10px' }}>
      <Alert variant="filled" severity="error">
        This is an error alert — check it out!
      </Alert>
    </Grid>
  );
} else {
  return null;
}
0
Himanshu Gupta 23 Янв 2021 в 19:34
65863391