下拉列表预选择以前保存的值的方法

问题描述 投票:0回答:1

也许标题太混乱了,但我的任务本身也很混乱。 我有一个字段,它存储具有某些输入和下拉列表的行。下拉列表已定义值 2024-2021。当我添加一行时,我需要下拉菜单已经从之前保存的年份中预选了前一年。 例如,我保存 2024 年,如果我添加一个新行,它应该已经预先选择了 2023 年。 this is a how it should be

我尝试添加一个功能,当您按下“保存”按钮时,将之前保存的年份减1,但是效果不佳,当您加载页面时,它就不起作用,您选择一个,然后选择了上一个,但下一个不再起作用,并且保持同一年。 still the same year 这是我的函数的一个例子 `const changeItem = ({ 组, 数组, 索引, setFieldValue, 只读 }) => { const [错误,setError] = useState(''); const [errorYear, setErrorYear] = useState('');

const [loading, setLoading] = useState(false);
const emptyYear = {
    year: '',
    q1: '',
    q2: '',
    q3: '',
    q4: ''
};
const handleAddYear = (push, years) => {
let yearToAdd = currentYear - 1
let savedYears = years


.filter(year => year.isSaved && year.year)
.map(year => parseInt(year.year))
.sort((a, b) => a - b); 


while(savedYears.includes(yearToAdd)) {
    yearToAdd--;
}
const newYear = { ...emptyYear, year: yearToAdd.toString() };

push(newYear);

};`

<Button disabled={readOnly} buttonType={BUTTON_TYPE_CLASSES.TextButton} size="small" color="blue" {...console.log(year.year)} onClick={() => handleAddYear(push, right.years)} > Add </Button>

这是我的第一篇文章,如果我不太清楚或没有提出正确的问题,请抱歉。谢谢您的宝贵时间

javascript reactjs
1个回答
0
投票

我认为这应该可以解决问题:

const handleAddYear = (push, years) => {
  const savedYears = years
    .filter((year) => year.isSaved && year.year)
    .map((year) => parseInt(year.year))
    .sort((a, b) => a - b);

  let yearToAdd = savedYears.length > 0 ? savedYears[0] - 1 : new Date().getFullYear() - 1;

  while (savedYears.includes(yearToAdd)) {
    yearToAdd--;
  }

  const newYear = { ...emptyYear, year: yearToAdd.toString() };

  push(newYear);
};
© www.soinside.com 2019 - 2024. All rights reserved.