Rio t Route를 사용하여 라우팅할 때 렌더링하기 전에 손쉽게 처리할 수 있는 방법
10633 단어 riotJavaScriptriot.jsriot-route
다음은 주의사항.
Riot.js Advent Calendar 2019는
riot
Riot.js는
route
v5.2.0(執筆時点の最新)
※ v5와 관련해서는 별도의 글을 쓰고 있습니다onBeforeRoute 이벤트 프로세서 생성
루트의 원본 코드를 보면 두 개의 riot 구성 요소를 발견할 수 있습니다. 그중@riotjs/route을 보세요.
router-hoc.rit의 발췌문onBeforeRoute(path, pathToRegexp) {
if (!match(path, this.state.pathToRegexp)) {
this.update({
route: null
})
}
},
기쁜 이름을 정의하는 방법 w 그리고 route-hoc.riot 중,
index.js// 省略
import Route from './components/route-hoc.riot'
import Router from './components/router-hoc.riot'
// 省略
export {
// 〜
Router,
Route
}
응응🤔잘 모르겠어요. 확실히 쓰고 있어요.그럼 이걸로 onBeforeRoute
할게요.
메일 병합 처리 추가
이번 공식 퍼레이드 하나index.js를 빌렸다.<router>, <route>
등의 레이블이 아닌 JS 라우팅 기반입니다.
standalone-history.}(변경 전)<nav>
<a href="/hello">Hello</a>
<a href="/user">User</a>
<a href="/user/gianluca">Username</a>
<a href="/goodbye">goodbye</a>
</nav>
<div id="root"></div>
<script type="module">
const { initDomListeners, setBase } = route
const loc = window.location
setBase(`${loc.protocol}//${loc.host}`)
const onRoute = (url) => root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
route.route('/hello').on.value(onRoute)
route.route('/user').on.value(onRoute)
route.route('/user/:username').on.value(onRoute)
route.route('/goodbye').on.value(onRoute)
initDomListeners()
</script>
nav
에는 링크의 간단한 SPA만 표시되며, 클릭하면 해당 텍스트가 아래div 탭에 표시됩니다.
그럼 여기에 onBeforeRoute
방법을 추가합니다.
standalone-history.}(변경 후)
<nav>
<a href="/hello">Hello</a>
<a href="/user">User</a>
<a href="/user/gianluca">Username</a>
<a href="/goodbye">goodbye</a>
</nav>
<div id="root"></div>
<script type="module">
const { initDomListeners, setBase } = route
const loc = window.location
setBase(`${loc.protocol}//${loc.host}`)
const onRoute = (url) => root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
+ const onBeforeRoute = () => {
+ // 現在のルーティングパスを取得し表示
+ alert(route.getCurrentRoute())
+ }
+ route.route('/hello').on.value(onBeforeRoute)
route.route('/hello').on.value(onRoute)
route.route('/user').on.value(onRoute)
route.route('/user/:username').on.value(onRoute)
route.route('/goodbye').on.value(onRoute)
initDomListeners()
</script>
그럼 실행해 봅시다.
standalone-history.html
링크Username
를 누르면div 탭/user/gianluca
에 텍스트가 표시됩니다.여기서 링크를 클릭하면 ↑를 포착할 수 있습니다.
alert에 표시된 문자는 Hello
로 실행/hello
의 루트 자체이지만 문자가 아직 고쳐지지 않아 차단되었다.
끝말
결국 이것은 간단한 방법일 뿐이다. 사실 나는 이렇게 해서는 안 된다고 생각한다. 즉, 방금 처리된 것을 아래처럼 다시 쓰면 Hello
의 경보가 먼저 표시된다는 것이다.
발췌하다- const onRoute = (url) => root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
+ const onRoute = (url) => {
+ root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
+ alert("onRoute!!")
+ }
const onBeforeRoute = () => {
// 現在のルーティングパスを取得し表示
alert(route.getCurrentRoute())
}
- route.route('/hello').on.value(onBeforeRoute)
route.route('/hello').on.value(onRoute)
+ route.route('/hello').on.value(onBeforeRoute)
이 설명을 조금 더 자세히 하자면route 내부에는 의 프로그램 라이브러리rawth를 사용하고rawth 내부에는 1의 프로그램 라이브러리에 의존하고 있다.
그럼 이 아이가 배열관리onRoute!!
로 측정한 루트는 순서대로 집행되기 때문에 먼저 표시.on
된다.따라서 onRoute!!
에 설정된 순서를 먼저 써야 합니다.
사실 올바른 사용법이 있다고 생각하지만 이렇게 움직이니까 또 뭐가 있는지 알면 업데이트하고 싶어요.
그럼 안녕히 계세요.ω゜)ノ
참고 자료
onBeforeRoute(path, pathToRegexp) {
if (!match(path, this.state.pathToRegexp)) {
this.update({
route: null
})
}
},
// 省略
import Route from './components/route-hoc.riot'
import Router from './components/router-hoc.riot'
// 省略
export {
// 〜
Router,
Route
}
이번 공식 퍼레이드 하나index.js를 빌렸다.
<router>, <route>
등의 레이블이 아닌 JS 라우팅 기반입니다.standalone-history.}(변경 전)
<nav>
<a href="/hello">Hello</a>
<a href="/user">User</a>
<a href="/user/gianluca">Username</a>
<a href="/goodbye">goodbye</a>
</nav>
<div id="root"></div>
<script type="module">
const { initDomListeners, setBase } = route
const loc = window.location
setBase(`${loc.protocol}//${loc.host}`)
const onRoute = (url) => root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
route.route('/hello').on.value(onRoute)
route.route('/user').on.value(onRoute)
route.route('/user/:username').on.value(onRoute)
route.route('/goodbye').on.value(onRoute)
initDomListeners()
</script>
nav
에는 링크의 간단한 SPA만 표시되며, 클릭하면 해당 텍스트가 아래div 탭에 표시됩니다.그럼 여기에
onBeforeRoute
방법을 추가합니다.standalone-history.}(변경 후)
<nav>
<a href="/hello">Hello</a>
<a href="/user">User</a>
<a href="/user/gianluca">Username</a>
<a href="/goodbye">goodbye</a>
</nav>
<div id="root"></div>
<script type="module">
const { initDomListeners, setBase } = route
const loc = window.location
setBase(`${loc.protocol}//${loc.host}`)
const onRoute = (url) => root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
+ const onBeforeRoute = () => {
+ // 現在のルーティングパスを取得し表示
+ alert(route.getCurrentRoute())
+ }
+ route.route('/hello').on.value(onBeforeRoute)
route.route('/hello').on.value(onRoute)
route.route('/user').on.value(onRoute)
route.route('/user/:username').on.value(onRoute)
route.route('/goodbye').on.value(onRoute)
initDomListeners()
</script>
그럼 실행해 봅시다.standalone-history.html
링크
Username
를 누르면div 탭/user/gianluca
에 텍스트가 표시됩니다.여기서 링크를 클릭하면 ↑를 포착할 수 있습니다.alert에 표시된 문자는
Hello
로 실행/hello
의 루트 자체이지만 문자가 아직 고쳐지지 않아 차단되었다.끝말
결국 이것은 간단한 방법일 뿐이다. 사실 나는 이렇게 해서는 안 된다고 생각한다. 즉, 방금 처리된 것을 아래처럼 다시 쓰면 Hello
의 경보가 먼저 표시된다는 것이다.
발췌하다- const onRoute = (url) => root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
+ const onRoute = (url) => {
+ root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
+ alert("onRoute!!")
+ }
const onBeforeRoute = () => {
// 現在のルーティングパスを取得し表示
alert(route.getCurrentRoute())
}
- route.route('/hello').on.value(onBeforeRoute)
route.route('/hello').on.value(onRoute)
+ route.route('/hello').on.value(onBeforeRoute)
이 설명을 조금 더 자세히 하자면route 내부에는 의 프로그램 라이브러리rawth를 사용하고rawth 내부에는 1의 프로그램 라이브러리에 의존하고 있다.
그럼 이 아이가 배열관리onRoute!!
로 측정한 루트는 순서대로 집행되기 때문에 먼저 표시.on
된다.따라서 onRoute!!
에 설정된 순서를 먼저 써야 합니다.
사실 올바른 사용법이 있다고 생각하지만 이렇게 움직이니까 또 뭐가 있는지 알면 업데이트하고 싶어요.
그럼 안녕히 계세요.ω゜)ノ
참고 자료
- const onRoute = (url) => root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
+ const onRoute = (url) => {
+ root.innerHTML = `${url} and params=${JSON.stringify(url.params)}`
+ alert("onRoute!!")
+ }
const onBeforeRoute = () => {
// 現在のルーティングパスを取得し表示
alert(route.getCurrentRoute())
}
- route.route('/hello').on.value(onBeforeRoute)
route.route('/hello').on.value(onRoute)
+ route.route('/hello').on.value(onBeforeRoute)
Reference
이 문제에 관하여(Rio t Route를 사용하여 라우팅할 때 렌더링하기 전에 손쉽게 처리할 수 있는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/clown0082/items/c25fd645e79fc1fbc320텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)