์คํ ๋ฆฌ๋ฅผ ๋ ๋๋ง/์ถ๊ฐํ๊ธฐ ์ ์ ์ธ๋ถ API๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ๊ณผ ๊ฐ์ ๋น๋๊ธฐ ์์ ์ ์ํํ ์ ์์ต๋๊น?
๋ด๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
// inside src/stories/index.js
axios.get('http://api.someURLtogetdata.com')
.then(({ data }) => {
storiesOf('Data Viewer', module)
.add('Test', () => {
return <TestStory data={data} />;
})
});
์๋ํ์ง ์์ต๋๋ค. ๋๋ ๋ํ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋ค.
const stories = storiesOf('Data Viewer', module)
axios.get('http://api.someURLtogetdata.com')
.then(({ data }) => {
stories.add('Test', () => {
return <TestStory data={data} />;
})
});
์คํ ๋ฆฌ๋ถ์ผ๋ก ์ด์ ๊ฐ์ ๊ฒ์ ๋ฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ์ด ์์ต๋๊น?
๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ ์ํ ์ ์์ต๋๋ค.
class LoadData = extends React.Component {
state = {
data: null
}
componentDidMount() {
axios.get(this.props.url).then(data => this.setState({ data }))
}
render() {
return this.props.children(this.state.data)
}
}
storiesOf('DataViewer')
.add('test', () => (
<LoadData url="http://api.someURLtogetdata.com">
{data =>
<TestStory data={data} />
}
</LoadData>
))
ํ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค @einarlove!
์ด ๋ฌธ์ ๋ ๋์ผํ ๋ฌธ์ ๋ฅผ ์์ํ๋ฉฐ ๊ฐ๋ฅํ ํด๊ฒฐ์ฑ ์ด ์์ต๋๋ค: https://github.com/storybooks/react-storybook/issues/713
๊ทธ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
API๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ๊ฒ์ด๋ผ๊ณ ์์ํฉ๋๋ค(๊ตฌํ๋์ง ์์).
storiesOf('DataViewer')
.add('test', () => axios
.get('http://api.someURLtogetdata.com')
.then(({ data }) => <TestStory data={data} />)
)
๊ทํ์ ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค! ๋ฐฉ๊ธ ๊ฒ์ํ ์๋ฃจ์ ์ด ๊ทํ์ ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํ๋ค๊ณ ์๊ฐํ๋ค๋ฉด ์ด๋ฒ ํธ #713์์ ์ด์ ๋ํด ์ด์ผ๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค.
๋์ํ์ง ์๊ณ ๋ค๋ฅธ API๋ฅผ ์ํ๋ ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์ฌ๋ ๊ฒ์ ํ์ํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ ์ํ ์ ์์ต๋๋ค.