gpt4 book ai didi

javascript - 在 react 中将数据从一个组件传递到另一个组件

转载 作者:行者123 更新时间:2023-11-30 10:01:36 25 4
gpt4 key购买 nike

我有一个组件,我试图在单击它时将数据从前一个组件传递到该组件。我试过 setState 来改变状态,但没有任何效果。我如何传递数据?数据存在于 this.listing 中

这是第一个组件:

const JobOffer = React.createClass({
mixins: [Navigation],

getInitialState: function() {
console.log(this.props.data);
return {
listing: this.props.data
};
},

componentDidMount: function() {
AppStore.addChangeListener(this._onChange);
},

componentWillUnmount: function() {
AppStore.removeChangeListener(this._onChange);
},

_onChange : function(){

},


handleClick: function () {

this.transitionTo('/listing/' + this.state.listing.id );

},


render: function () {
var data = this.state.listing;
var employmentType;
switch(data.employment_type) {
case 'F':
employmentType = 'Full Time';
break;
case 'P':
employmentType = 'Part Time';
break;
case 'H':
employmentType = 'Hourly';
break;
default:
employmentType = 'Unknown';
}
return (
<div>
<a onClick={this.handleClick.bind(this)}>
<img style={{width: 50+'px', height: 50+'px'}} src="/images/job1.jpg" alt="" className="img-circle" />
<div className="title">
<h5>{data.job_title}</h5>
<p>{data.Business.business_name}</p>
</div>
<div className="data">
<div ><i>Posted 1 Day Ago</i></div>
<div className="city"><i className="fa fa-map-marker"></i>{data.Business.business_city}</div>
<div className="type full-time"><i className="fa fa-clock-o"></i>{employmentType}</div>
<div className="sallary"><i className="fa fa-dollar"></i>{data.job_compensation}</div>
</div>
</a>
</div>
);
},

});


module.exports = JobOffer;

如您所见,transitionTo 上面的组件是我想要的,但是在调用 handleClick 时如何传递 this.listings 数据?

这是我要将其传递给的组件:

var React = require('react');
var ReactBootstrap = require('react-bootstrap');
var Button = ReactBootstrap.Button;
var Modal = ReactBootstrap.Modal;
var AppActions = require('../actions/app-actions');
var AppStore = require('../stores/app-store');
var Navigation = require('react-router').Navigation;
var _ = require('lodash');


// Our custom component is managing whether the Modal is visible
const ListingDetail = React.createClass({
mixins: [Navigation],

getInitialState: function() {
console.log(this.props.data);
return {
listing: this.props.data
};
},

componentDidMount: function() {
AppStore.addChangeListener(this._onChange.bind(this));
},


_onChange : function(){

},


handleClick: function () {
this.transitionTo('/listing/apply/' + this.state.listing.id );
},


render: function () {
var data = this.state.listing;
var employmentType = 'test';
return (
<div>
<img style={{width: 200+'px', height: 200+'px'}} src="/images/job1.jpg" alt="" className="img-circle" />
<div className="title">
<h5>{data.job_title}</h5>
<p>{data.Business.business_name}</p>
</div>
</div>
);
},

});


module.exports = ListingDetail;

最佳答案

React 本身 不提供在组件之间共享数据的方法,除非它们位于相同的组件层次结构中。 React 仅直接提供祖先到后代的传递,通过“props”将数据从父组件传递到子组件。您还可以通过将回调(在父级中定义的方法)作为 prop 传递给子组件,然后让子组件在某些内容发生变化时调用该回调并将数据作为参数传递,从而间接地将数据从子组件共享到父组件。阅读有关渲染多个组件和数据共享的更多信息 here .

如果您的组件在完全独立的路由中呈现,就像您正在尝试做的那样,那么您将不得不以其他方式提供数据流。 React 本身并没有提供这些,但是 Flux Facebook 的开发人员支持的一种方法是明确处理数据流,并且非常适合 React。

关于javascript - 在 react 中将数据从一个组件传递到另一个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31331636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com