ReactJS:如何设置通过单选按钮选择的对象的状态?

时间:2019-06-25 09:05:01

标签: reactjs radio-button

在我的UsedComponents组件中,我有一个映射的单选按钮列表,每个单选按钮都返回componentType作为值。

this.props.usedComponents.map((component, index) => (
  <RadioButton
    key={index}
    id={component.componentType}
    icon={ButtonIco}
    label={component.componentName}
    name="select"
    value={component.componentType}
    inputClass={classes.RadioInput}
    labelClass={classes.RadioLabel}
    selected={component.selected}
    handleChange={this.props.selectComponent}
  />
))

我的状态如下:

constructor(props) {
  super(props);
  this.state = {
    components: components,
    usedComponents: [components[0], components[2], components[3]],
  };
  this.selectComponentHandler = this.selectComponentHandler.bind(this);
}

components是一个导入的对象数组,每个对象看起来都像这样:

{
  componentType: "headerLogoNavigation",
  componentName: "Header 02",
  padding: "small",
  fontSize: "small",
  fontColor: "#1f1f1f",
  fontFamily: "Sans-serif",
  backgroundColor: "#ffffff",
  image: placeholderLogo,
  selected: false,
  isEditing: false,
  margins: false,
  roundCorners: "none",
  mobile: "false"
}

在我的Page组件中,我试图将selectComponentHandler道具传递给我的UsedComponents组件,该组件应根据所选单选按钮的值选择一个组件并设置其状态到selected: true。要获得额外的好处,它应该将任何先前选择的组件的状态设置为selected: false
到目前为止,我设法弄清楚了如何选择组件,但是我无法更新其状态。我在放弃之前创建该处理程序的最终尝试如下:

selectComponentHandler = event => {
  this.setState(prevState => {
    let selected = prevState.usedComponents.filter(item => item.componentType === event.target.value);
    selected.selected = 'true';  
    return { selected };
  });
};

,这是一种尝试将prevState内的setState过滤为与单选按钮componentType相匹配的event.target.value并设置其状态的方法,但我搞砸了逻辑或语法,我的脑袋即将爆炸,因此我无法弄清楚自己做错了什么。 有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我知道了。有点黑,但是可以用。

int main(int argc, char *argv[])
{
    unsigned char output[16] = {0x00};  // copied from code

    // .... (some steps to calculate output[i])

    for (i = 0; i < 16; i++)
    {
        printf("%02X ", output[i]); // output[i] is an array of 16-byte hex values
    }

    return 0;
}
相关问题