1
これは奇妙です。小児に渡されない小道
class CompanyDetailContainer extends Component {
async componentDidMount() {
const { fetchCompany } = this.props,
{ companyId } = this.props.match.params;
await fetchCompany(companyId);
}
render(){
const { company } = this.props;
console.log(company) // this outputs a company
return (
<CompanyDetail className="ft-company-detail" company={company} />
);
}
}
const mapStateToProps = state => ({
company: state.company.company
});
const mapDispatchToProps = {
fetchCompany: fetchCompany
};
export default connect(mapStateToProps, mapDispatchToProps)(CompanyDetailContainer);
CompanyDetailContainer私は小道具からそれを引いてみたときに、それは
ヌルだ、
が、私の子供では何らかの理由:私にconsole.logは、会社を生産しますCompanyDetail
export default class CompanyDetail extends Component {
render(){
const callToAction = 'test';
const { company } = this.props;
console.log(company) // this is null! why??? I've never had this problem before
const title = `${company.name} Details`;
return (
<Main>
<MainLayout title={title}>
<div>
<div id='ft-company-detail'>
<div className="panel vertical-space">
<CompanyHeader className="ft-company-header" company={company} />
<div className="ft-call-to-action-interview">{callToAction}</div>
<CompanyProfile className="ft-company-profile" company={company} />
<RelatedLinks className="ft-company-resources" company={company} />
</div>
</div>
</div>
</MainLayout>
</Main>
);
}
}
/////これは働いていた////
UPDATE:
return (
company && <CompanyDetail className="ft-company-detail" company={company} />
);
しかし、その後、なぜこのコンボ作業罰金していますか?それはセットアップとほぼ同じです。これが私のアプリにヒット最初のルートで、このコンテナレンダリング:
HomepageContainerを
class HomePageContainer extends Component {
async componentDidMount() {
await this.props.fetchFeaturedCompanies();
await this.props.fetchCompanies();
await this.props.fetchCountries();
}
render(){
return (<HomePage
className='ft-homepage'
companies={this.props.companies}
countries={this.props.countries}
featuredCompanies={this.props.featuredCompanies}
/>);
}
}
const mapStateToProps = state => ({
countries: state.country.countries,
companies: state.company.companies,
featuredCompanies: state.company.featuredCompanies
});
const mapDispatchToProps = {
fetchCountries: fetchCountries,
fetchCompanies: fetchCompanies,
fetchFeaturedCompanies: fetchFeaturedCompanies
};
export default connect(mapStateToProps, mapDispatchToProps)(HomePageContainer);
私のテーマにコメントやつ、最初の画像にホームページ
export default class HomePage extends Component {
render(){
return (
<Main>
<MainLayout title='Test'>
<div className="homepage panel vertical-space margin-bottom-300">
<FeaturedCompanies companies={this.props.featuredCompanies} />
<div>
<div className="column-group">
<div className="all-100 width-100 align-center fw-300 extralarge">
test
</div>
</div>
</div>
<CompanyList className="ft-company-list" companies={this.props.companies} countries={this.props.countries} />
</div>
</MainLayout>
</Main>
);
}
}
上記はChromeのツールの暗いテーマですP:ここで私が考えるWebStormの私の実際のテーマはさらに良いです
componentDidMountが後に呼び出されるようになりますレンダリングして、非同期呼び出しは、最初に親と子をレンダリングし、両方のヌル得るためので、componentDidMountであり、そしてあなた以来'company.name'を子で使用して、条件チェックをしなくてもエラーが出ます。条件付きチェックを追加して動作するかどうか確認してください。 –
私はこのような多くのコンテナ/子の設定を持っており、どれもこの問題がありません – PositiveGuy
しかし、私の2番目の例はなぜ機能しますか? (私のポストを更新して別のコンテナ/子コンボを表示します。セットアップはまったく同じです) – PositiveGuy