1
JSON 요소를 기반으로 양식 요소를 생성하는 양식 작성기가 있습니다. 이 프로세스에서는 열린 요소를 추가하기 때문에 JSX는 오류를 발생시킵니다. 가장 좋은 방법은 무엇입니까?ReactJS 변수에 푸는 닫지 않은 요소
샘플 JSON :
[
{
"name": "1900",
"label": "Year 1900"
},
{
"name": "",
"label": "Group 2000",
"type": "groupstart"
},
{
"name": "2000",
"label": "Year 2000",
"select": true
},
{
"name": "2001",
"label": "Year 2002"
},
{
"name": "2002",
"label": "Year 2002"
},
{
"name": "",
"label": "",
"type": "groupend"
},
{
"name": "2100",
"label": "Year 2100"
}
]
예상 출력
<select>
<option value="1900">Year 1900</option>
<optgroup label="Group 2000">
<option value="2000" selected>Year 2000</option>
<option value="2001">Year 2001</option>
</optgroup>
<option value="2100">Year 2100</option>
</select>
내가 지금까지 가지고있는 코드 :
let fieldOptions = []
field.options.selectOptions.map(function(entry){
if (entry.type === 'groupstart') {
fieldOptions.push(<optgroup label={entry.label}>)
} else if (entry.type === 'groupend') {
fieldOptions.push('</optgroup>');
} else {
fieldOptions.push(<option value={entry.name}>{entry.label}</option>)
}
});
results.push(
<select
name={field.name}
ref={field.name}
key={field.id}
onChange={(e) => {field.onChange(e, field.entryType); }}
onFocus={() => { focusFunction(field); }}
value={field.value}>
{ fieldOptions }
</select>
);
것 {', 거기 활성 그룹이며, 만약 그렇다면 있는지 확인하기 위해'group.length'을 확인되어서는 안된다 'group'에'fieldOptions'가 아닌'group'을 덧붙이시겠습니까? 또한'group = []'을 groupend 조건으로 이동하십시오. 그렇지 않으면 그룹 시작과 끝은 있지만 둘 사이의 그룹은 갖지 않습니다. – MrCode
아 좋은 지적입니다 - 고마워요. –
끝내 주셔서 감사합니다. 코드를 약간 수정했습니다. 그룹을 개체로 유지하려면 그룹을 닫을 때 optgroup 레이블이 없으므로 업데이트 된 스키마, 고맙습니다. 팀 메이트에게 전달 했으므로 적절하게 업데이트 할 것입니다. 업데이트 된 코드로 코드를 편집하고 답변을 수락합니다. –