Как я могу установить флажок и обновить значение с помощью graphql api в React js?

#reactjs #radio-button #multiple-columns #graphql-js

#reactjs #переключатель #несколько столбцов #graphql-js

Вопрос:

Я создал сценарий для множественного добавления поля в react js. В этом я добавил переключатель для выбора одного варианта, а другой отключен. когда у меня есть обновление, я не получил переключатель формы с установленным значением, где я получаю значение из api

 const [disabledField, setDisabledField] = useState<string>("weightedAuction");
const addEmptyTargetFields = () => {
  setTarget((previousTarget) => [...previousTarget, target.length   1]);
};
const removeTarget = (index: number) => {
  setTarget([...target.slice(0, index), ...target.slice(index   1)]);
};
  

я беру образец статических данных для флажка, в котором я проверил, имеет ли значение bidFloor значение, превышающее значение checked или weightedAuction значение, превышающее значение checked

 let bidrule = {
  targets: [{ bidFloor: 10, weightedAuction: null }],
};
  

это мой код просмотра для переключателя

 {target.map((e, i) => {
        return (
          <div key={i}>
            <FlexWrapper>
              <BidderSelectWrapper>
                <Controller
                  as={Select}
                  control={control}
                  name={`targets[${i}].networkId`}
                  placeholder="Bidder"
                  options={networkOptions}
                  optionComponent={NetworkOption}
                  // defaultValue={defaultValueSelect[i]}
                  value={networkOptions.find(({ value: value }) => value === "")}
                />
                {/* <Controller as={BidderSelect} control={control} name={`targets[${i}].networkId`} /> */}
              </BidderSelectWrapper>
              <Separator width="48px" />
              <FlexColumnWrapper>
                <FlexWrapper align="center">
                  <RadioButton
                    name={`target_value_${i}`}
                    value={"bitFloor"}
                    checked={bidrule.targets[i].bidFloor}
                    onClick={() => {
                      setDisabledField("weightedAuction");
                      bidrule.targets[i].radioChecked = "weightedAuction";
                    }}
                  />
                  <Separator width="24px" />
                  <Textbox
                    placeholder="Bid Floor"
                    formRef={register}
                    name={`targets[${i}].bidFloor`}
                    isDisabled={disabledField === `bidFloor`}
                    value={bidrule.targets[i]?.bidFloor}
                  />
                </FlexWrapper>
                <HorizontalSeparator height="24px" />
                <FlexWrapper align="center">
                  <RadioButton
                    name={`target_value_${i}`}
                    value={"weightedAuction"}
                    checked={bidrule.targets[i].weightedAuction}
                    onClick={() => {
                      setDisabledField("bidFloor");
                      bidrule.targets[i].radioChecked = "weightedAuction";
                    }}
                  />
                  <Separator width="24px" />
                  <SliderWrapper>
                    <Controller
                      as={SliderComponent}
                      control={control}
                      title="Weighted Auction"
                      min={0}
                      max={100}
                      name={`targets[${i}].weightedAuction`}
                      isDisabled={disabledField === "weightedAuction"}
                      defaultValue={bidrule.targets[i]?.weightedAuction}
                    />
                  </SliderWrapper>
                </FlexWrapper>
              </FlexColumnWrapper>
              {i > 0 amp;amp; <StyledCross onClick={() => removeTarget(i)} />}
            </FlexWrapper>
          </div>
        );
      })}
      <LinkButton onClick={() => addEmptyTargetFields()}>Add More</LinkButton>
  

это мой код вызова переключателя

 interface CheckboxProps {
 name?: string;
 value?: string;
 checked?: boolean;
 textLabel?: string;
 onChange?: (e: React.ChangeEvent) => void;
 onClick?: (e: React.MouseEvent) => void;
}

const RadioButtonComponent: React.FC<CheckboxProps> = (props) => {
const { textLabel, onChange, name, value, checked, onClick } = props;

return (
 <Wrapper>
  <Input
    type="radio"
    name={name}
    value={value}
    checked={checked}
    aria-checked={checked}
    onChange={onChange}
    onClick={onClick}
  />
  <Fill />
  <div style={{ marginLeft: "25px" }}>{textLabel}</div>
 </Wrapper>
);
  

Комментарии:

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

2. у меня нет никаких проблем с этим, я просто не понимаю, как вызвать checked и обновить значение

3. пожалуйста, сделайте фрагмент этого, чтобы мы могли решить вашу проблему намного быстрее, для этого вы можете использовать codesandbox