ํ์ฌ 2์ฃผ ํ๋ก์ ํธ๋ฅผ ์งํ ์ค์ด๋ค.
ํ๋ก ํธ๋ฅผ ๋งก์ ๋ฆฌ์กํธ์ ๋ฆฌ์กํธํ
์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ, ๋ธ๋ก๊น
ํด์ผ๋ ๊ฒ๋ค์ด ๋๋ฌด ๋ง์๋ค. ์ง์ง ๋ค ๊น๋จน๊ธฐ ์ ์ ๋์ถฉ์ด๋ผ๋ ์ ์ด๋ด์ผ๊ฒ ๋ค.
input ์์ฑ๊ฐ type, required ๋ฑ์ด ์๋ํ์ง ์๋๋ค๋ฉด ๋ถ๋ชจ ํ๊ทธ๊ฐ form์ธ์ง ๋จผ์ ํ์ธํด ๋ณด์.
img url ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋๋ฐ ์ด๊ฒ ์ ๋ ์๋์ ์ ํ๋ ๊ฒ์ด๋ค. ์๊ณ ๋ณด๋ ์๋ฒ์ธก data type ์ long text๋ก ์ค์ ํด ์ค์ผ ๋๋๊ฒ. ์๋ํ๋ฉด ๋ณดํต varchar 255๋ 255์๊ฐ ์ต๋์ด๊ธฐ ๋๋ฌธ. base64๋ก ์ธ์ฝ๋ฉ๋์ ๋์ค๋ ๊ฐ์ ๋ณด๋ฉด ์ด๋ง์ด๋งํ๊ฒ ๊ธธ๋ค. ์ฝ์์ฐฝ ์์ด๊ฐ.. ์ด๋ ๊ฒ ์๋ฌ ํ๋ ์์ํ๊ฒ ํด๊ฒฐํ๋ค.
ํ์ด์ง ์ด๋ํ ๋ <a href="#"></a>
์์ ๋ฃ์ผ๋๊น ์๋๋ค. href๋ก ๋ฐ๋ก ์ด๋ํ๋๊น ์๋ก๊ณ ์นจ์ด ๊ณ์๋์ด ๋ฌธ์ ๋ฐ์์ ์์ธ์ด ๋์์๋ค.
<a href="#">
<button className="nav-post nav-btn" onClick={this.moveToNewpost} > New post </button>
</a>
input type="file" ์คํ์ผ๋ง ํ๋ ๋ฒ. label์ ์ฌ์ฉํ๊ณ , input์ opacity : 0 ์ผ๋ก ์๋ณด์ด๊ฒ ์จ๊ฒผ๋ค. label์ ํด๋ฆญํ๋ฉด input์ด ์ด๋ฆฌ๋ ํน์ฑ์ ์ด์ฉํ์ฌ ํ ์คํ์ผ๋ง. ์์ฒญ ์ ์ฉํ๊ฒ ์ ์ธ ๊ฒ ๊ฐ๋ค. ์์ง๋ง๊ณ label for="file"
input id="file"
๊ฐ๊ฐ for๊ณผ id ์์ ๊ฐ์ ์ด๋ฆ์ ์ ์ด์ค์ผ ์๋ํ๋ค.
class ์ปดํฌ๋ํธ์์ ์ this.props.history๊ฐ ์๋ํ์ง ์๋์ง ์ฐพ์๋ณด๋ withRouter ์ ๋ถ๋ฌ์ค๊ณ import { withRouter } from 'react-router-dom';
๋ด๋ณด๋ผ ๋ ์ด๋ ๊ฒ ์์ฑํด ์ค์ผ๋๋ ๊ฒ์ด๋ค. export default withRouter();
history ๊ฐ ์๋ํ์ง ์๋๋ค๋ฉด ํ์ธํด ๋ณผ ๊ฒ.
๋ฐฐ๊ฒฝํ๋ฉด์ผ๋ก ์์์ ๋ฃ๋ ์์
์์ ์ด๋ฏธ์ง ๋ฃ๋ ๊ฒ ์ฒ๋ผ import๋ก ๋ฐ์์ค์ง ์์ผ๋ฉด ์๋ํ์ง ์๋๋ค.
autoPlay ์๋์ฌ์
muted ์๋ฆฌ์์
loop ๋ฌดํ์ฌ์
import introVideo from '๋น๋์ค ๊ฒฝ๋ก';
<video id="video" autoPlay muted loop>
<source src={introVideo} className="introvideo" type="video/mp4" />
</video>
form ํํฌ์ ํน์ฑ์ ๋ํด์ ์ข ๋ ๊ณต๋ถํด์ผ ํ ๊ฒ ๊ฐ๋ค. form์ ์ผ์ ๋ ์๋ก๊ณ ์นจ๋๋ ๋ฌธ์ ๊ฐ ์์๋ค.
๋ก๊ทธ์ธ, ๋ก๊ทธ์์, ํ์๊ฐ์ ์ฝ๋๋ฅผ ์ง๋๋ฐ ๊ฝค๋ ์ ๋ฅผ ๋จน์๋ค.. ๋๊ฒ ์ฌ์ด ์ค ์์์๋๋ฐ..ใ ใ ํ ํฐ์ธ์ฆ๋ฐฉ์์ ์ผ๋๋ฐ, localStorage์ ์ ์ฅ๋์ ์๋ก๊ณ ์นจํด๋ ์ํ๊ฐ ์ ์ง๋๋๋ก ๋ก์ง์ ์งฐ๋ค. ๊ทธ๋ฐ๋ฐ ๋ก์ปฌ์๋ ๊ทธ๋๋ก ์๋๋ฐ ์๋ก๊ณ ์นจํ๋ฉด ๋ก๊ทธ์ธ ์ํ๊ฐ ํ๋ ค๋ฒ๋ฆฌ๋ ๊ฒ ๊ฐ๋ค. ํ๋ก์ ํธ ๋๋๋ ๋ฆฌํฉํ ๋งํ ๊ฒ ์์ฒญ ๋ง์ ๊ฒ ๊ฐ๋ค ใ ใ ใ
input์ autoFocus ๋ฃ์ด์ฃผ๋ฉด ๊ตณ์ด ์ ๋ ฅ๋์ ํด๋ฆญํ์ง ์์๋ ์ฎ๊ฒจ๊ฐ๋ ์ ์ฉํ ์์ฑ!
textarea์์ (placeholder ๋ง๊ณ ) ์ง์ ์
๋ ฅํ ๊ฐ์ ์ด๊ธฐํ ํ๊ณ ์ถ์ด์ ์ํ๋ณ๊ฒฝ์ผ๋ก ๊ด๋ฆฌํด ๋ณด๋ คํ๋ค. ๊ทธ๋ฐ๋ฐ ์ด๊ธฐํ๋ฅผ ์ ์ฉํด๋ ํ๋ฉด์์ ์ ์ฉ์ด ์ ๋๋ ๊ฒ์ด๋ค..! ๋นํฉ ๋นํฉ
๋ค๋ฅธ ๊ฒ๋ค์ ์ ์ ์ฉ๋๋๊ฑธ ๋ณด๋ input, textarea ํ๊ทธ๋ value ๊ฐ์ด ์๋ ํ๊ทธ๋ผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ textarea ์ value๋ฅผ content ๋ก ์ง์ ํด ์ฃผ๋ ๋ง๋ํ๊ฒ ๋ฌธ์ ํด-๊ฒฐ!
// ์ํ๋ ์ด๋ ๊ฒ ๊ด๋ฆฌํ๊ณ
const [content, setContent] = useState('')
// ์ด๊ธฐํ ํจ์๋ฅผ ๋ง๋ค์ด ๋ฒํผ ํด๋ฆญ ์ด๋ฒคํธ ๋ฐ์์ ํจ์ ์คํ๋ ์ ์๋๋ก ํด์ฃผ๊ณ
function handleReset() {
setContent('')
}
// ํจ์ ์ปดํฌ๋ํธ return ๋ถ๋ถ์์ value์ฒ๋ฆฌ
<textarea value={content}