入力ボックスとタイトルを持つアプリケーションをセットアップしました。タイトル入力はonChange
に変更され、タイトルが更新されます。状態は配列{title:[{title: 'Welcome', feature: 'test'}]
を持つオブジェクトです。タイトルにsetStateが正常に機能しましたが、機能が不明になりました。 、header.jsが親で、ReactJS - .setStateが正常に呼び出された後、他のプロパティが定義されなくなる
が
import React from "react";
export default class Title extends React.Component {
render() {
return (
<h1>{this.props.title}</h1>
);
}}
import React from "react";
import Header from "./Header";
export default class Layout extends React.Component {
constructor() {
super();
this.state = {
title: [{
title: 'Welcome',
feature: 'test'
}]
};
}
changeTitle(titleChange) {
this.setState({title: [{title: titleChange }]});
}
render() {
return (
<div>
<Header changeTitle={this.changeTitle.bind(this)} title={this.state.title[0].title} feature={this.state.title[0].feature} />
</div>
);
}
}
HEADER.JS
import React from "react";
import Title from "./Header/Title";
export default class Header extends React.Component {
handleChange(e) {
const title = e.target.value;
console.log(e, title);
this.props.changeTitle(title);
}
render() {
console.log(this.props.title) //This test Works
console.log(this.props.feature) //This test Works
return (
<div>
<Title title={this.props.title} />
<h4> Feature Here: {this.props.feature} </h4> //This disappears after I change input
Title Here: <input value={this.props.title} onChange={this.handleChange.bind(this)} />
</div>
);
}
}
TITLE.JS
だからメインですapp.js APP.JS:コードを参照してください。 title.jsは子供です(私が正しく理解していれば)。がundefined
になるので、title
がnew title
であるため、変更した後。どのようなアイデアが間違っている? componentWillUpdate
を使用する必要があるかもしれませんが、私はどうしたらいいか分かりません。
'this.setState({タイトル:[{タイトル:titleChange、特徴:this.state.title [0] .featureを} ]}); ' – Jayce444
また、Andyが言ったことを繰り返し述べると、州を「複雑にする」と言ったとき、彼は難しく複雑であるという意味ではなく、面倒で扱いにくいという意味です。あなたの質問に基づいて、あなたはReactで多くの経験がないように見えるので、できるだけシンプルな状態を作ることは、たくさんのところであなたを助けます。 1つの要素を持つ配列である 'title'プロパティは、2つのプロパティを持つオブジェクトで、そのうちの1つはやはり 'title'です。ちょうど奇妙で乱雑です。ちょうどあなたが状態で保存する必要があり、それをどのように保存する必要があるのか考えるのに少し時間を費やすのが良いでしょう – Jayce444
ああ私はあなたに全く同感です!そして私はこれで新しいです。このセットアップは** no ** senseとなっていますが、私が完全なデザインを説明していれば、それはします(編集:私はそうすると思います)。しかし、Jayceのコードがうまくいってくれてありがとう!ほんとうにありがとう! –