Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 使用样式化组件时出现PropTypes错误_Reactjs_Material Ui_Styled Components_React Proptypes - Fatal编程技术网

Reactjs 使用样式化组件时出现PropTypes错误

Reactjs 使用样式化组件时出现PropTypes错误,reactjs,material-ui,styled-components,react-proptypes,Reactjs,Material Ui,Styled Components,React Proptypes,在React应用程序(使用create-React-app创建)中使用样式化组件时遇到了一些问题,在该应用程序中,我还使用了材质ui 我对样式化组件很在行,所以我试图根据另一个材质ui组件,在样式化组件中设置材质ui组件的样式。为了澄清我试图做的事情,下面是代码: const StyledContainer = styled(Container)` background-color: ${props=>props.theme.defaultBackground}

在React应用程序(使用create-React-app创建)中使用样式化组件时遇到了一些问题,在该应用程序中,我还使用了材质ui

我对样式化组件很在行,所以我试图根据另一个材质ui组件,在样式化组件中设置材质ui组件的样式。为了澄清我试图做的事情,下面是代码:

const StyledContainer = styled(Container)`          
    background-color: ${props=>props.theme.defaultBackground};
    ${FormControl} {
        width:100%;
      }
`;
其中Container和FormControl确实是重要的ui组件

现在我知道我不应该在父母身上塑造孩子,但正如我所说,我只是在练习

当我这样做并使用StyleContainer时,我会得到一个PropType错误:

Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at ...
这是堆栈跟踪:

checkType
node_modules/prop-types/factoryWithTypeCheckers.js:181
flatten
http://localhost:3000/static/js/0.chunk.js:226001:21
ComponentStyle.generateAndInjectStyles
http://localhost:3000/static/js/0.chunk.js:226243:27
useInjectedStyle
http://localhost:3000/static/js/0.chunk.js:226460:120
useStyledComponentImpl
http://localhost:3000/static/js/0.chunk.js:226488:28
Styled(WithStyles(ForwardRef(Container)))
http://localhost:3000/static/js/0.chunk.js:226555:12
renderWithHooks
node_modules/react-dom/cjs/react-dom.development.js:14803
updateForwardRef
node_modules/react-dom/cjs/react-dom.development.js:16816
beginWork
node_modules/react-dom/cjs/react-dom.development.js:18645
HTMLUnknownElement.callCallback
node_modules/react-dom/cjs/react-dom.development.js:188
invokeGuardedCallbackDev
node_modules/react-dom/cjs/react-dom.development.js:237
invokeGuardedCallback
node_modules/react-dom/cjs/react-dom.development.js:292
beginWork$1
node_modules/react-dom/cjs/react-dom.development.js:23203
performUnitOfWork
node_modules/react-dom/cjs/react-dom.development.js:22154
workLoopSync
node_modules/react-dom/cjs/react-dom.development.js:22130
performSyncWorkOnRoot
node_modules/react-dom/cjs/react-dom.development.js:21756
scheduleUpdateOnFiber
node_modules/react-dom/cjs/react-dom.development.js:21188
updateContainer
node_modules/react-dom/cjs/react-dom.development.js:24373
(anonymous function)
node_modules/react-dom/cjs/react-dom.development.js:24758
unbatchedUpdates
node_modules/react-dom/cjs/react-dom.development.js:21903
legacyRenderSubtreeIntoContainer
node_modules/react-dom/cjs/react-dom.development.js:24757
render
node_modules/react-dom/cjs/react-dom.development.js:24840
你能帮我弄明白吗


谢谢

如果引用的组件是样式化组件,则只能引用另一个组件中的组件。从:

此行为仅在样式化组件的上下文中受支持:在以下示例中尝试装载B将失败,因为组件A是React.component的实例,而不是样式化组件

引发错误-无法将类作为函数调用-是因为样式化组件试图将该组件作为插值函数调用

但是,在styled()工厂中包装A使其符合插值条件——只需确保包装的组件传递类名即可

即:

const StyledFormControl = styled(FormControl);

const StyledContainer = styled(Container)`          
    background-color: ${props=>props.theme.defaultBackground};
    ${StyledFormControl} {
      width:100%;
    }
`;

如果引用的组件是样式化组件,则只能引用另一个组件中的组件。从:

此行为仅在样式化组件的上下文中受支持:在以下示例中尝试装载B将失败,因为组件A是React.component的实例,而不是样式化组件

引发错误-无法将类作为函数调用-是因为样式化组件试图将该组件作为插值函数调用

但是,在styled()工厂中包装A使其符合插值条件——只需确保包装的组件传递类名即可

即:

const StyledFormControl = styled(FormControl);

const StyledContainer = styled(Container)`          
    background-color: ${props=>props.theme.defaultBackground};
    ${StyledFormControl} {
      width:100%;
    }
`;

我明白了,我会测试它,然后带着结果回来。。。。谢谢我明白了,我会测试它,然后带着结果回来。。。。谢谢