警告:道具类型失败:预期类型为“字符串”的无效道具“错误”

时间:2020-04-06 15:59:12

标签: javascript reactjs ecmascript-6

我的ReactJS项目中有一个Material-ui Textfield组件。

运行代码时,我在控制台中收到的警告是:

index.js:1 Warning: Failed prop type: Invalid prop `error` of type `string` supplied to `ForwardRef(TextField)`, expected `boolean`.

我的组件代码如下。

 <TextField
   required
   error={errorMessages.myErrorMessage}
   helperText={errorMessages.myErrorMessage}
   value={myTextField}
  />

此代码可以正常工作,但问题在于它在控制台中给出了警告消息。

我希望仅在“ errorMessages.myErrorMessage”值不是空字符串时显示错误消息。

对此是否有ES6或其他解决方案?

3 个答案:

答案 0 :(得分:1)

我认为您需要这样做

local luartmidi = require 'luartmidi'

通过这种方式,如果errorMessages.myErrorMessage为空字符串,则传递false。而且react组件期望错误类型为布尔值,即true或false。

答案 1 :(得分:1)

error的{​​{1}}属性需要一个布尔值,但是您正在向其传递一个字符串。

如果TextField不是空字符串,如果您想显示错误,则可以检查字符串的长度,例如:

errorMessages.myErrorMessage

或者,您也可以使用<TextField required error={errorMessages.myErrorMessage.length > 0} helperText={errorMessages.myErrorMessage} value={myTextField} /> 代替!!errorMessages.myErrorMessage
这利用了以下事实:一个空字符串为falsy,所有其他字符串为truthy

答案 2 :(得分:0)

实际上,每次执行时您的错误= {!! errorMessages.myErrorMessage}无关紧要,是否有错误,因此请使用条件,例如“ errorMessages?errorMessages.myErrorMessage:void 0”,并避免传递布尔值(如true或false) ......快乐的编码