0

仍然围绕着反应及其神秘的方式缠绕我的头。在 jQuery + HTML 中,可能有一个元素,该元素<ListView> </ListView>稍后会由生成<Item>s 的 for 循环填充。同样在角度上,您只需 ng-repeat。

这样做的反应方式是什么?我以前有这个工作,当我有一个<ListView items={listItems}></ListView>listItems 在其他地方定义为listItems = {heading:"qwerty", label:"test"}etc 但现在当我检查执行代码时,我看到每个<Item>创建的都是一个“ReactElement”类型,因此不支持使用该行为。

任何想法将不胜感激!谢谢。

更新代码:

render:function(){
    //Do the rendering

    var listViewItemsToRender = this.state.ListViewItems.map((item) => {
        return (
            <Item><div style={itemContainerParent}> <div style={itemPlatform}> <h1>props.platform</h1> </div><div style={routeInfo}><h1>props.routeInfo</h1></div><div style={timeInfo}><div style={row}><p>props.timeArriving</p></div><div style={row}><p>props.timeLeaving</p></div></div></div></Item>
        )
    });



    return (
        <Page>
            <BannerHeader theme="prime" key="header" flex={0} textAlign="center">Train Times</BannerHeader>
            <h2>{this.state.subheading}</h2>
            <Container>
                <Padding>
                    <BasicSegment>
                        <ButtonGroup fluid>
                            <Button onClick={this.showDepartures} variation={this.state.departuresSelected}>Departures</Button>
                            <Button onClick={this.showArrivals} variation={this.state.arrivalsSelected}>Arrivals</Button>
                        </ButtonGroup>
                        <Listview items={listViewItemsToRender}></Listview>

                    </BasicSegment>
                </Padding>
            </Container>
        </Page>
    );
}
4

1 回答 1

0

记住在 reactjs 中是单向数据流。所以你处理数据并且用户界面会根据你的修改做出反应......所以你的渲染方法将是循环的地方......

在您的渲染处理程序方法中,您将拥有类似...

render : function(){
  return itemsTobeDisplayed = items.map(function(item){
      return yourCustomItemMethodWhichRendersAsingleItem(itm);
    });

}

看看 reactjs todo 示例,它显示了一个包含单个项目的列表

https://github.com/tastejs/todomvc/tree/master/examples/react

...这可能会有所帮助。

于 2016-03-03T15:36:52.883 回答