【问题标题】:The value attribute is not displaying anything in the input type="checkbox" in React Typescriptvalue 属性在 React Typescript 的输入 type="checkbox" 中不显示任何内容
【发布时间】:2021-06-11 02:55:46
【问题描述】:

我试图在 React Typescript 中的复选框旁边显示一些文本,并且 value 属性不起作用。如果我尝试设置任何 innerHTML,那么它会给我一个错误 input is a void element tag and must neither have children nor use dangerouslySetInnerHTML. 我该怎么办?

interface LetterOptionsProps{
    letterOptions:any

}

export default class LetterOptions extends Component<LetterOptionsProps>{
    render(){
        if(this.props.letterOptions.length>0){
            
        return(
            this.props.letterOptions.map((a:any, i:any) => {
                return (
                            <React.Fragment>
                                <input key={i} className="letter-option" type="checkbox" value={a} /> 
                            </React.Fragment>
               
                        );
                    }
                )
        );
        }else{
            return(<div></div>);
            
        }
    }
}

【问题讨论】:

  • 您是否要为该复选框显示标签?

标签: html reactjs typescript react-typescript


【解决方案1】:

听起来您希望输入具有标签。正如错误指出的那样,输入是无效返回,不能有任何子项。

另外,仅供参考,React 键应放置在被包装的最外层元素上,即 React.Fragment(如果您仍在使用它)或 label,如下所示。

this.props.letterOptions.map((a:any, i:any) => (
  <label key={i}>
    {a}
    <input className="letter-option" type="checkbox" /> 
  </label>
))

总体而言,您还可以通过应用一些条件渲染来简化组件代码。

export default class LetterOptions extends Component<LetterOptionsProps>{
  render() {
    const { letterOptions } = this.props;
    return letterOptions.length ? letterOptions.map((a:any, i:any) => (
      <label key={i}>
        {a}
        <input className="letter-option" type="checkbox" /> 
      </label>
    )) : null
  }
}

【讨论】:

  • @varung1303 听起来这个答案解决了您的问题/问题。如果是这样,那么我邀请您将其标记为已接受。如果它有帮助,那么请不要忘记也投票(如果你还没有)。干杯。
猜你喜欢
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 2020-01-25
  • 2023-03-10
  • 2014-01-20
  • 2022-11-16
相关资源
最近更新 更多