Javascript 如何以正确的方式创建此反应模式?
我一直在开发我的第一个Meteor应用程序,有点卡住了。我想按照最新的指导原则(ES6和React 15)创建代码,但我对Javascript中最近的所有更改感到困惑 我想在我当前的评论列表中添加一个引导模式,但似乎不知道如何使用正确的最新语法将我的内容添加到模式中 这是我目前的代码: 在comment.js中:Javascript 如何以正确的方式创建此反应模式?,javascript,meteor,reactjs,react-bootstrap,Javascript,Meteor,Reactjs,React Bootstrap,我一直在开发我的第一个Meteor应用程序,有点卡住了。我想按照最新的指导原则(ES6和React 15)创建代码,但我对Javascript中最近的所有更改感到困惑 我想在我当前的评论列表中添加一个引导模式,但似乎不知道如何使用正确的最新语法将我的内容添加到模式中 这是我目前的代码: 在comment.js中: 从“React”导入React; 从“react bootstrap”导入{Row,Col,ListGroupItem,FormControl,Button}; 从'meteor/t
从“React”导入React;
从“react bootstrap”导入{Row,Col,ListGroupItem,FormControl,Button};
从'meteor/themeteorchef:Bert'导入{Bert};
从“/comments model”导入{CommentsModal}
导出常量注释=({Comment})=>(
删除评论
);代码>将道具中的数据传递到CommentsDal,并按正常方式呈现。将道具中的数据传递到CommentsDal,并按正常方式呈现。如果可能,我尝试在使用redux时将本地状态排除在组件之外,以便回答您关于使其无状态的问题,我将采取以下步骤:
- 从modal.js中删除打开模态的按钮
- 从modal.js中删除实际模态,只需将模态内容放在其中
- 将“打开模式”按钮更改为钩住一个动作创建者,该动作创建者设置一个道具以打开模式并传递其内容(同时设置一个道具以关闭模式)
看起来是这样的
<ListGroupItem key={ comment._id }>
<Row>
<Col xs={ 8 } sm={ 10 }>
<FormControl
type="text"
defaultValue={ comment.title }
/>
</Col>
<Col xs={ 4 } sm={ 2 }>
<Button
bsStyle="danger"
className="btn-block">
Remove Comment
</Button>
</Col>
</Row>
<!-- Here is where it changes, -->
<Button
bsStyle="primary"
bsSize="large"
onClick={this.props.openModal(comment)}
>
</Button>
<Modal show={this.props.commentModal} onHide={this.props.closeModal}>
<CommentsModal content={this.props.commentModal} />
</Modal>
关闭按钮触发onHide
,该按钮链接到this.props.closeModal
操作,该操作仅执行以下操作:
case actions.OPEN_COMMENT_MODAL:
return state.set('commentModal', undefined);
因此,这允许您只使用一个模态实例,并通过该按钮将当前注释传递给它,然后单击并打开它。show只是检查truthy值,因此您将其设置回undefined,它将隐藏自己
然后我将content
的道具传递给模态,这样您就可以在模态内部使用它了。同样,请将名称更改为最适合您的名称。如果可能,在使用redux时,我会尝试将本地状态排除在组件之外,因此为了回答您关于使其无状态的问题,我将采取以下步骤:
- 从modal.js中删除打开模态的按钮
- 从modal.js中删除实际模态,只需将模态内容放在其中
- 将“打开模式”按钮更改为钩住一个动作创建者,该动作创建者设置一个道具以打开模式并传递其内容(同时设置一个道具以关闭模式)
看起来是这样的
<ListGroupItem key={ comment._id }>
<Row>
<Col xs={ 8 } sm={ 10 }>
<FormControl
type="text"
defaultValue={ comment.title }
/>
</Col>
<Col xs={ 4 } sm={ 2 }>
<Button
bsStyle="danger"
className="btn-block">
Remove Comment
</Button>
</Col>
</Row>
<!-- Here is where it changes, -->
<Button
bsStyle="primary"
bsSize="large"
onClick={this.props.openModal(comment)}
>
</Button>
<Modal show={this.props.commentModal} onHide={this.props.closeModal}>
<CommentsModal content={this.props.commentModal} />
</Modal>
关闭按钮触发onHide
,该按钮链接到this.props.closeModal
操作,该操作仅执行以下操作:
case actions.OPEN_COMMENT_MODAL:
return state.set('commentModal', undefined);
因此,这允许您只使用一个模态实例,并通过该按钮将当前注释传递给它,然后单击并打开它。show只是检查truthy值,因此您将其设置回undefined,它将隐藏自己
然后我将content
的道具传递给模态,这样您就可以在模态内部使用它了。同样,将名称更改为最适合您的名称。将这两个名称合并为一个名称的最佳方法是什么?如果我理解正确,您希望在模态体中显示CommentList?它是否给出任何错误?如果有,你会给我们看吗?“我想在里面显示数据,我不能让它工作”什么数据,从哪里来,应该在哪里呈现?除了模式中的文本之外,模式代码不会呈现任何内容???我看到注释列表
应该是传递注释的,所以我假设这就是您所说的,但您没有在模式中使用它?你能澄清一下这里到底出了什么问题吗?很抱歉没有用正确的方式提出我的问题,谢谢你指出这一点。因此,我实际上成功地获得了模态中我想要的数据。我只需要将变量传递到,但我忘记了。现在让我重新构造我的问题,是否可以重新格式化我的Comments-modal.js,使它也成为一个无状态的功能组件?如果是的话,最好的方法是什么。“这个”总是把我搞糊涂。“把这两者结合在一起最好的方法是什么?”把这两者结合在一起?如果我理解正确,您希望在模态体中显示CommentList?它是否给出任何错误?如果有,你会给我们看吗?“我想在里面显示数据,我不能让它工作”什么数据,从哪里来,应该在哪里呈现?除了模式中的文本之外,模式代码不会呈现任何内容???我看到注释列表
应该是传递注释的,所以我假设这就是您所说的,但您没有在模式中使用它?你能澄清一下这里到底出了什么问题吗?很抱歉没有用正确的方式提出我的问题,谢谢你指出这一点。因此,我实际上成功地获得了模态中我想要的数据。我只需要将变量传递到,但我忘记了。现在让我重新构造我的问题,是否可以重新格式化我的Comments-modal.js,使它也成为一个无状态的功能组件?如果是的话,最好的方法是什么。“这个”一直把我搞得一团糟。事实上,这个我忘了。谢谢你,我忘了。谢谢你的精彩解释,我要试一试@Deelux很棒,如果你有任何问题,请告诉我。谢谢你的解释,我将尝试一下@迪勒克斯:太好了,如果你有任何问题,请告诉我。