不变性违规:React.Children.only期望接收单个React元素子节点

24

我一直收到不变违规的错误,但我真的不知道为什么...它肯定与OverlayTriggers有关。如果将它们删掉,一切就正常了。

导入:

import Col from 'react-bootstrap/lib/Col';
import Row from 'react-bootstrap/lib/Row';
import Tooltip from 'react-bootstrap/lib/Tooltip';
import OverlayTrigger from 'react-bootstrap/lib/OverlayTrigger';

应该呈现一个键/值对的列表项,其中值具有工具提示:

const renderCustomField = (field,customFields) => {
    const tooltip = (<Tooltip id="tooltip">{customFields[field]['sub']}</Tooltip>)
    return (
        <li>
            <OverlayTrigger placement="top" overlay={tooltip}>
                {field}
            </OverlayTrigger>
        </li>
    )
}

想要渲染自定义字段的类:

export default class EventHeaderCustomFields extends Component {
    render () {
        const customFieldsNames = Object.keys(this.props.customFields);

        return (
            <Col xs={12}>
                <h4><strong>Short overview:</strong></h4>
                <ul>
                {customFieldsNames.map(
                    (field) => renderCustomField(field,this.props.customFields)
                )}
                </ul>
            </Col>
        )
    }
}

EventHeaderCustomFields.propTypes = {
    eventData:PropTypes.object
};
1个回答

40

OverlayTrigger 期望接收一个 React 元素作为子元素,将 {field} 包裹在 或者任何其他有效的 React jsx 元素中可以解决这个问题。

<li>
    <OverlayTrigger placement="top" overlay={tooltip}>
        <span>{field}</span>
    </OverlayTrigger>
</li>

✓ 省去了我大量的时间...谢谢您 - mprivat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接