javascript - Context.Consumer 源值映射不渲染任何元素

标签 javascript reactjs

我正在尝试渲染Context.Consumer收集的一系列消息。

我的实现如下:

class UserChat extends React.Component {
  render() {
    const { classes } = this.props;
    return (
      <Box display="flex" flexDirection="column">
        <span>test nessages</span>
        <sessionContext.Consumer>
          {(session) => {
            session.chat.lastMessages.map((message) => {
              console.log(message);
              return <span key={message.id}>{message.text}</span>;
            });
          }}
        </sessionContext.Consumer>
      </Box>
    );
  }
}

export default withStyles(useStyles)(UserChat);

问题是除了测试消息之外没有消息被渲染。

console.log(message) 输出以下内容:

{userName: "User1", avatar: "", id: 12355435435, text: "Test message"}
{userName: "User2", avatar: "", id: 210394240, text: "Test message 2"}

React Devtools 正确值:

enter image description here

元素树缺少跨度元素:

enter image description here

最佳答案

您忘记返回映射的 JSX。

class UserChat extends React.Component {
  render() {
    const { classes } = this.props;
    return (
      <Box display="flex" flexDirection="column">
        <span>test nessages</span>
        <sessionContext.Consumer>
          {(session) => {
            return session.chat.lastMessages.map((message) => {
              console.log(message);
              return <span key={message.id}>{message.text}</span>;
            });
          }}
        </sessionContext.Consumer>
      </Box>
    );
  }
}

export default withStyles(useStyles)(UserChat);

关于javascript - Context.Consumer 源值映射不渲染任何元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62963528/

相关文章:

javascript - React 条件渲染和导航栏

javascript - 滚动文档,使单击的元素出现在页面顶部

javascript - 没有应用 JavaScript/jQuery 的 mouseout FadeOut 问题

javascript - 在不发送 HTTP 请求的情况下使用 documentFragment 解析 HTML

JavaScript 函数在 Firefox 上运行良好但在 Chrome 上运行不佳

javascript 在我的客户端和服务器文件夹之间共享代码

javascript - WebWorker 中运行的代码是否在不同的领域中运行?

javascript - 如何使用列名搜索数据表?

javascript - React 教程给出 TypeError

reactjs - 类型错误 : Failed to load plugin 'jest' declared in '.eslintrc' : Class extends value undefined is not a constructor or null