我有一個組件,我試圖在單擊它時將數據傳遞給以前的組件。我試過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我想要的路線,但我怎麼打發this.listings數據時handleClick是調用?
這裏是我試圖將它傳遞給組件:
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;
你的組件都沒有渲染另一個組件。 – Rishabh
如何渲染並將此列表傳遞給來自JobOffer的ListingDetail – rahul2001
@ rahul2001可能值得關注此https://facebook.github.io/react/docs/multiple-components.html應該爲您明確 – knowbody