5週目/Twitter State&Propsへの返信
これは前に学んだことを総合して完成させる課題です.
その他は,以前の課題で既に解決した部分である.
StateとPropsの利用
新しいツイッターを書いたとき、ツイッターの内容が転送されるフォーラムを復習しましょう.
tweets.jsファイルを変更すればいいです.
tweet tweetファイルが2つありますので、よく探してください
Tweetsコンポーネントでは、一部のデータがステータスである必要があります.
どのデータをpropsとしてサブコンポーネントに渡すかを考慮できます.
const Tweets = () => {
// TODO : 새로 트윗을 작성하고 전송할 수 있게 useState를 적절히 활용하세요.
const handleButtonClick = (event) => {
const tweet = {
}
// TODO : Tweet button 엘리먼트 클릭시 작동하는 함수를 완성하세요.
// 트윗 전송이 가능하게 작성해야 합니다.
};
const handleChangeUser = (event) => {
// TODO : Tweet input 엘리먼트에 입력 시 작동하는 함수를 완성하세요.
};
const handleChangeMsg = (event) => {
// TODO : Tweet textarea 엘리먼트에 입력 시 작동하는 함수를 완성하세요.
};
}
データ型const dummyTweets = [
{
id: 1,
username: 'kimcoding',
picture: `https://randomuser.me/api/portraits/women/${getRandomNumber(
1,
98
)}.jpg`,
content:
'모든 국민은 인간으로서의 존엄과 가치를 가지며, 행복을 추구할 권리를 가진다. 모든 국민은 종교의 자유를 가진다. 국가는 농·어민과 중소기업의 자조조직을 육성하여야 하며, 그 자율적 활동과 발전을 보장한다. 모든 국민은 양심의 자유를 가진다. 누구든지 체포 또는 구속을 당한 때에는 즉시 변호인의 조력을 받을 권리를 가진다.',
createdAt: '2019-02-24T16:17:47.000Z',
updatedAt: '2019-02-24T16:17:47.000Z',
},
...
]
入力
まず、名前とテキストフォーマットで文章を書くときに役立つ関数を実現しましょう.
InputのonChangeイベントを使用すればよい
イベントオブジェクトイベントはパラメータとして受信され、使用できます.
このオブジェクトのイベント.targetは、イベントが発生したDOM input DOMを指します.
DOMの値、e.target.valueを使用して現在の入力に値を入力します.
この値をuseStateで管理すればいい!
const Tweets = () => {
// TODO : 새로 트윗을 작성하고 전송할 수 있게 useState를 적절히 활용하세요.
let [이름작성, 이름작성함수] = useState("");
let [텍스트작성, 텍스트작성함수] = useState("");
// state를 변경할때는 state함수를 사용해야한다
// 이름작성함수 안에 현재 input에 입력한 값인
// event.target.value를 넣어주고 밑의 input태그 안에
// onChange 이벤트 안에 함수를 넣어서 실행시키게 해주면 완성된다
const handleChangeUser = (event) => {
// TODO : Tweet input 엘리먼트에 입력 시 작동하는 함수
이름작성함수(event.target.value)
};
const handleChangeMsg = (event) => {
// TODO : Tweet textarea 엘리먼트에 입력 시 작동하는 함수
텍스트작성함수(event.target.value)
};
}
<input
type="text"
onChange = {handleChangeUser}
></input>
<textarea
onChange = {handleChangeMsg}
></textarea>
新しいtweetを追加
既存のツイッターデータが含まれている場合は、ツイッターボタンを押すと新しいツイッターを追加する必要があります.
追加するデータを作成するには、既存のデータをコピーし、追加するデータを統合します.
const 새로운데이터 = [tweet, 데이터]
を合わせると.データ・レプリケーションではなく値が共有されるため、Spread構文を使用して深度レプリケーションを行う必要があります.
ボタンのonClickイベントに関数を追加し、クリックしたときに実行できるようにします.
最後に重要なのは、既存のデータを含む新しいツイッターが現れるべきだということです.
地図を回して印刷したら.
ボタンを押すと、新しいデータリストに追加されて解決されます
const Tweets = () => {
// TODO : 새로 트윗을 작성하고 전송할 수 있게 useState를 적절히 활용하세요.
let [이름작성, 이름작성함수] = useState("");
let [텍스트작성, 텍스트작성함수] = useState("");
let [데이터, 데이터함수] = useState(dummyTweets);
const handleButtonClick = (event) => {
const tweet = {
id: 데이터.length+1,
username: 이름작성,
picture: `https://randomuser.me/api/portraits/women/${getRandomNumber(
1,
98
)}.jpg`,
content: 텍스트작성,
createdAt: new Date(),
updatedAt: new Date(),
}
const 새로운데이터 = [tweet, ...데이터]
데이터함수(새로운데이터);
};
<button onClick = {handleButtonClick}>Tweet</button>
{데이터.map((tweet) => <Tweet tweet={tweet}/> )}
参考資料入力ステータスの管理
推奨される反応講義
エンコードアップル-YouTube
コードアップル-Webサイト
Reference
この問題について(5週目/Twitter State&Propsへの返信), 我々は、より多くの情報をここで見つけました https://velog.io/@support/코드스테이츠-5주차-React-Twittler-State-Propsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol