Reactjs 为什么物料UI';s";“使用样式”;不允许使用camelCase道具?

Reactjs 为什么物料UI';s";“使用样式”;不允许使用camelCase道具?,reactjs,material-ui,Reactjs,Material Ui,在使用新材料用户界面(从本帖开始,版本为1.0.0-beta.33)时,我在支撑套管方面遇到了很多问题。似乎在某些情况下,withStyles任意允许使用骆驼套道具,而在其他情况下则不允许 例如: <ChipInput dataSource={defaultGroups} defaultValue={this.state.groups} fullWidth={true} label="Test Groups" newChipKeyCodes={[9,

在使用新材料用户界面(从本帖开始,版本为1.0.0-beta.33)时,我在支撑套管方面遇到了很多问题。似乎在某些情况下,
withStyles
任意允许使用骆驼套道具,而在其他情况下则不允许

例如:

<ChipInput
    dataSource={defaultGroups}
    defaultValue={this.state.groups}
    fullWidth={true}
    label="Test Groups"
    newChipKeyCodes={[9, 13, 32, 186, 188]}
    onChange={chips => this.submitForm(field, this.state.groups, chips.toString())}
    openOnFocus={true}
/>

为什么我不能将
openOnFocus
与材质UI主题一起使用,但它不会抱怨其他道具,如
fullWidth
?我可以在正常的react组件上使用camelCase道具。问题不在于
材质ui
不接受camelCase道具。您可以通过查看来确认这一点

问题是他们会做出反应。因此,如果一个HTML标记接收到一个React无法识别的道具,您将得到您提到的警告。您可以使用以下代码段重现该结果:

<button someRidiculousAndClearlyInvalidProp={this.myFunc} />
请注意,
MyComponent
获取所有未使用的道具,将它们存储在
other
中,并使用
…other
将它们向下传播给孩子。这种模式非常好,因为它提供了非常灵活的API。例如,此模式允许客户端以组件设计器可能没有计划的方式在
div
上设置
onMouseEnter
或其他任意道具

但是,考虑一下如果客户端意外地传递了一个未使用的道具,比如<代码> SulrIDIOULUTION和DeleDealPrimeP< <代码>会发生什么。道具将在

…other
中结束,然后传播
div
,导致未知道具警告

这种模式在材质ui中非常常见。例如,您可以看到它的示例(只需搜索
…other
即可找到示例)。如果我不得不打赌,我会认为具有这种模式的组件和放错位置、拼写错误或忘记的道具是您问题的根源

编辑与复制 是的,那正是我所想的。
openOnFocus
道具已从
材质ui芯片输入的第1版中删除。你可以看到,它不再是和。例如,请看第411行

由于
openOnFocus
不再是一个有效的道具,它的功能与
some荒谬且明显无效的drop
相同,并从我上面描述的确切机制中抛出一个错误


所以,再次强调,材质ui绝对没有驼峰案例道具的问题。相反,这个错误几乎总是由无效的道具传播到根组件引起的。因此,只要查看您看到此错误的所有地方,并进行检查,以确保一切正常,并且使用了有文档记录的有效道具。

问题不在于
材质ui
不接受驼峰案例道具。您可以通过查看来确认这一点

问题是他们会做出反应。因此,如果一个HTML标记接收到一个React无法识别的道具,您将得到您提到的警告。您可以使用以下代码段重现该结果:

<button someRidiculousAndClearlyInvalidProp={this.myFunc} />
请注意,
MyComponent
获取所有未使用的道具,将它们存储在
other
中,并使用
…other
将它们向下传播给孩子。这种模式非常好,因为它提供了非常灵活的API。例如,此模式允许客户端以组件设计器可能没有计划的方式在
div
上设置
onMouseEnter
或其他任意道具

但是,考虑一下如果客户端意外地传递了一个未使用的道具,比如<代码> SulrIDIOULUTION和DeleDealPrimeP< <代码>会发生什么。道具将在

…other
中结束,然后传播
div
,导致未知道具警告

这种模式在材质ui中非常常见。例如,您可以看到它的示例(只需搜索
…other
即可找到示例)。如果我不得不打赌,我会认为具有这种模式的组件和放错位置、拼写错误或忘记的道具是您问题的根源

编辑与复制 是的,那正是我所想的。
openOnFocus
道具已从
材质ui芯片输入的第1版中删除。你可以看到,它不再是和。例如,请看第411行

由于
openOnFocus
不再是一个有效的道具,它的功能与
some荒谬且明显无效的drop
相同,并从我上面描述的确切机制中抛出一个错误


所以,再次强调,材质ui绝对没有驼峰案例道具的问题。相反,这个错误几乎总是由无效的道具传播到根组件引起的。因此,只要查看您看到此错误的所有地方,并进行检查,以确保您的一切都正确无误,并且使用的是有文档记录的有效道具。

您好,感谢您的回复,但您似乎错过了我文章中的一些细节。我特别询问了新“材质UI”中的“使用方式”,而不仅仅是材质UI本身。我也提到了我正在使用的版本。1.0.0-beta.33版用于材料UI,1.0.0-beta.3版用于材料UI芯片输入。使用camelCase道具是可以的,直到我包装一个MUI组件并尝试使用camelCase将道具传递给它。然后它抱怨。我可以用指定的版本号重现您的问题。我相应地更新了我的答案。嗨,谢谢你的回复,但是你似乎错过了我帖子中的一些细节。我特别询问了新“材质UI”中的“使用方式”,而不仅仅是材质UI本身。我也提到了我正在使用的版本。1.0.0-beta.33版用于材料UI,1.0.0-beta.3版用于材料UI芯片输入。使用camelCase道具是可以的,直到我包装一个MUI组件并尝试使用camelCase将道具传递给它。然后它抱怨。我可以用指定的版本号重现您的问题。我相应地更新了我的答案。
const MyComponent = (props) => {
  const { oneProp, ...other } = props;

  return (
    <div {...other}>
      { oneProp ? "set" : "not set"}
    </div>
  );
};