Reactjs附加一个元素而不是替换

 书友36782274 发布于 2023-01-18 17:11

我正在尝试遍历列表/数组/对象的东西:(我使用coffeescript来保持清楚,这里是完整JS的jsfiddle.但它只是一个forEach)

pages = for page, each of @props.ids
    $('#start').append("
") React.renderComponent page(title: each.title, text: each.text), $("#"+page)[0]

并附加每个,而不是替换,只留下列表中的最后一项.

其中#start元素是起始容器,我想用多个元素填充它,但我需要给每个自己的容器,否则它们将全部覆盖彼此,默认的reactjs行为.

我想知道是否有办法告诉反应追加而不是替换div.

如果可能的话,我想避免使用jquery,并且完全做出反应.

我虽然给出了React.renderComponent page初始列表,然后在先前调用的模板中迭代,但是,然后我面临一个不同的问题,我必须有return一个reactjs元素对象,由整个列表组成,我真的不喜欢.

我需要初始调用来创建单独的,独立的反应模板,在列表中追加其他,最好没有任何额外的容器,或者使用jquery.

1 个回答
  • 我认为你的概念错了.React renderComponent确实在某个地方渲染了一个组件.多次执行此操作只会在该位置重新呈现相同的组件(也就是幂等).没有真正的"附加"声明,至少不是你要求的方式.

    这是你想要实现的一个例子.忘了renderComponent这个.只是将组件放在某个地方.

    /** @jsx React.DOM */
    var pages = [{title: 'a', text: 'hello'}, {title: 'b', text: 'world'}];
    
    var App = React.createClass({
      render: function() {
        return (
          <div>
            {
              this.props.pages.map(function(page) {
                return <div>Title: {page.title}. Text: {page.text}</div>;
              })
            }
          </div>
        );
      }
    });
    
    React.renderComponent(<App pages={pages} />, whateverDOMNodeYouWantItToBeOn);
    

    看看我在那里做了什么?如果我想要多个divs,我只需要创建尽可能多的s.它们代表了你的应用程序的最终外观,因此div多次"追加"它并不是真的有意义.

    2023-01-18 17:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有