警告:道具类型失败:提供给 DropdownItem 的道具 as 无效
Warning: Failed prop type: Invalid prop `as` supplied to `DropdownItem`
代码如下:
import UserPlateFunction from './components/UserPlate';
import {Form, Dimmer, Loader, Message, Header, Dropdown} from 'semantic-ui-react';
import UserPlateFunction from './components/UserPlate';
class Setting extends Component {
render(){
const {members} = this.state;
return(
<Dropdown>
<Dropdown.Menu>
{Object.keys(members).map((key, i) => {
return (
<Dropdown.Item
as={UserPlateFunction(members[key].user.gravatar)}
/>
)
})
} </Dropdown.Menu>
</Dropdown>
)
}
}
状态变量在自定义方法中设置(这里太长了就不加了)。我收到的警告是
警告:道具类型失败:提供给 DropdownItem
的道具 as
无效。
./components/UserPlate
import './index.css';
import PropTypes from 'prop-types';
import React from 'react';
let UserPlate = ({gravatar}) => (
<div className="clearfix">
<div className="user-img">
<img src={gravatar} alt='this one'/>
</div>
</div>
);
UserPlate.propTypes = {
gravatar : PropTypes.string.isRequired,
};
function UserPlateFunction(image){
return (<UserPlate gravatar={image}/>)
}
export default UserPlateFunction;
知道出了什么问题吗?提前致谢。
您需要提供函数或 HTML 元素的名称。你正在返回一个 React 组件。 (return (<UserPlate gravatar={image}/>)
)
正确的方法是传递与您的值绑定的函数,因此它在渲染时执行:
as={UserPlateFunction.bind(null, members[key].user.gravatar)}
或者,更好的是,直接导出 UserPlate
并做类似的事情:
as={UserPlate.bind(null, {
gravatar: members[key].user.gravatar}
)}
代码如下:
import UserPlateFunction from './components/UserPlate';
import {Form, Dimmer, Loader, Message, Header, Dropdown} from 'semantic-ui-react';
import UserPlateFunction from './components/UserPlate';
class Setting extends Component {
render(){
const {members} = this.state;
return(
<Dropdown>
<Dropdown.Menu>
{Object.keys(members).map((key, i) => {
return (
<Dropdown.Item
as={UserPlateFunction(members[key].user.gravatar)}
/>
)
})
} </Dropdown.Menu>
</Dropdown>
)
}
}
状态变量在自定义方法中设置(这里太长了就不加了)。我收到的警告是
警告:道具类型失败:提供给 DropdownItem
的道具 as
无效。
./components/UserPlate
import './index.css';
import PropTypes from 'prop-types';
import React from 'react';
let UserPlate = ({gravatar}) => (
<div className="clearfix">
<div className="user-img">
<img src={gravatar} alt='this one'/>
</div>
</div>
);
UserPlate.propTypes = {
gravatar : PropTypes.string.isRequired,
};
function UserPlateFunction(image){
return (<UserPlate gravatar={image}/>)
}
export default UserPlateFunction;
知道出了什么问题吗?提前致谢。
您需要提供函数或 HTML 元素的名称。你正在返回一个 React 组件。 (return (<UserPlate gravatar={image}/>)
)
正确的方法是传递与您的值绑定的函数,因此它在渲染时执行:
as={UserPlateFunction.bind(null, members[key].user.gravatar)}
或者,更好的是,直接导出 UserPlate
并做类似的事情:
as={UserPlate.bind(null, {
gravatar: members[key].user.gravatar}
)}