首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >失败的支柱类型:在“e”中标记为“Failed”,但它的值为“null”

失败的支柱类型:在“e”中标记为“Failed”,但它的值为“null”
EN

Stack Overflow用户
提问于 2017-10-12 02:31:23
回答 1查看 11.1K关注 0票数 2

在我的React应用程序中,我得到了以下错误,但它没有告诉我它发生在哪里。知道我怎么能确定它的位置吗?我拥有this.props.children的唯一地方似乎对此错误没有任何意义。

更新:这是Timeline组件。

代码语言:javascript
复制
import React, { PropTypes } from 'react';
import PerfectScrollBar from 'react-perfect-scrollbar';

// Components
import TimelineEntry from './timelineEntry';

// Defaults
import { AvatarUrl } from '../../../../enum/defaults';

const Timeline = ({ member, conversationId, messages, activeMessageId, handleClickMessageSelected }) => {

    return (
        <div className=" height-100 padding-top-70">

            <div className="padding-15" style={{ position: 'absolute', top: '0', left: '0' }}>

                {typeof conversationId !== "undefined" && conversationId !== ""
                    ? <div className="timeline-item-msg" id="msc-newConversationMessage">

                        <img src={member.avatar ? member.avatar.smallAvatarUrl : AvatarUrl.avatar} className="tim-image" />
                        <div className="tim-msg">
                            <div className="tim-msg-body cursor-pointer border-radius">
                                New Message
                            </div>
                        </div>
                      </div>
                    : null
                }
            </div>

            <div className="height-100 position-relative padding-15">

                <PerfectScrollBar>
                    {
                        messages.length > 0
                            ? messages.map(item => <TimelineEntry key={item.id} entry={item} activeMessageId={activeMessageId} handleClickMessageSelected={handleClickMessageSelected} />)
                            : null
                    }
                </PerfectScrollBar>

            </div>
        </div>
    );
}

Timeline.PropTypes = {

    member: PropTypes.object.isRequired,
    conversationId: PropTypes.string.isRequired,
    messages: PropTypes.array.isRequired,
    activeMessageId: PropTypes.string.isRequired,
    handleClickMessageSelected: PropTypes.func.isRequired
};

export default Timeline;

这是TimelineEntry组件:

代码语言:javascript
复制
import React, { PropTypes } from 'react';

// Defaults
import { AvatarUrl } from '../../../../enum/defaults';

// Utils
import { shortenTextToMaxCharacters } from '../../../../utils/string/stringUtils';

const TimelineEntry = ({ entry, activeMessageId, handleClickMessageSelected }) => {

    let wrapperClass = 'timeline-item-msg';
    if (entry.userFlag != 0)
        wrapperClass += ' flag-' + entry.userFlag;

    if (entry.id === activeMessageId)
        wrapperClass += ' active';

    return (
        <div className={wrapperClass} id={'mst-' + entry.id} onClick={e => handleClickMessageSelected(entry.id)}>

            <img src={entry.sender.avatarUrl ? entry.sender.avatarUrl : AvatarUrl.avatar} className="tim-image" />

            <div className="tim-msg">

                <div className="tim-msg-header">

                    {entry.sender.fullName} <br /><span className="opacity-6">{entry.messageTimeStamp.weekDay}  {entry.messageTimeStamp.date} <i className="margin-right-40">{entry.messageTimeStamp.time}</i></span>

                </div>

                <div className="tim-msg-body cursor-pointer">

                    {shortenTextToMaxCharacters(entry.body.trim(), 75)}

                </div>

            </div>

        </div>
    );
}

TimelineEntry.PropTypes = {

    entry: PropTypes.object.isRequired,
    activeMessageId: PropTypes.string.isRequired,
    handleClickMessageSelected: PropTypes.func.isRequired
};

export default TimelineEntry;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-12 03:10:21

您在PerfectScrollBar组件中使用的Timeline组件有一个propType children: PropTypes.node.isRequired。(代码位于https://github.com/goldenyz/react-perfect-scrollbar/blob/master/src/scrollbar.js)

Timeline组件中,当messages.length为0时,您将呈现null;这将导致PerfectScrollBar不呈现children,这反过来又会给出propType警告。

解决办法是呈现一个空的div,<div></div>而不是null,以便满足PerfectScrollBar的propTypes。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46700478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档