首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React:状态更新时调用dangerouslySetInnerHTML

React:状态更新时调用dangerouslySetInnerHTML
EN

Stack Overflow用户
提问于 2017-11-01 23:03:28
回答 1查看 1.1K关注 0票数 0

我在强制组件在状态更新时调用dangerouslySetInnerHTML时遇到了问题。我的测试表明,状态正在成功更新,并且组件已重新呈现。但是,在我再次刷新页面之前,所有设置为state的新信息都不会显示。

我在网上找到的唯一解决方案是为每个单元格设置唯一的键,但这并不起作用。

日历:

代码语言:javascript
复制
var tableItems = times.map((time) => {
  return <TableItem key={time} time={time}/>;
});

TableItem:

代码语言:javascript
复制
constructor(props) {
    super(props);
    this.state = {
        events: []
    }
}

componentWillReceiveProps(nextProps) {
    if (nextProps.events) {
        this.setState({
            events: nextProps.events
        })
    }
}

assignEvents(weedDay) {
    // Define variables based on this.state.events
    // if statement to check if event matches with time and date of table cell
            return {__html: '<div class="eventHolder">...variables...</div>'};
}

render() {
    return (
        <tr>
            <td dangerouslySetInnerHTML={this.assignEvents(0)}></td>
            <td dangerouslySetInnerHTML={this.assignEvents(1)}></td>
            <td dangerouslySetInnerHTML={this.assignEvents(2)}></td>
            <td dangerouslySetInnerHTML={this.assignEvents(3)}></td>
            <td dangerouslySetInnerHTML={this.assignEvents(4)}></td>
            <td dangerouslySetInnerHTML={this.assignEvents(5)}></td>
            <td dangerouslySetInnerHTML={this.assignEvents(6)}></td>
        </tr>
    );
}
EN

回答 1

Stack Overflow用户

发布于 2017-11-02 00:03:26

@Matheus Alves我在CodeSandbox上创建了这个示例项目,它似乎正在工作。https://codesandbox.io/s/48zwkxj1n9

这与您的用例相似吗?如果没有,你能重现你在CodeSandbox中看到的bug吗?

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

https://stackoverflow.com/questions/47057826

复制
相关文章

相似问题

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