logologo
시작
가이드
개발
플러그인
API
홈
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
시작
가이드
개발
플러그인
API
홈
logologo
RunJS 개요
모듈 가져오기
컨테이너 내 렌더링

전역 변수

window
document
navigator

ctx

ctx.blockModel
ctx.collection
ctx.collectionField
ctx.dataSource
ctx.dataSourceManager
ctx.element
ctx.exit()
ctx.exitAll()
ctx.filterManager
ctx.form
ctx.getModel()
ctx.getValue()
ctx.getVar()
ctx.i18n
ctx.importAsync()
ctx.initResource()
ctx.libs
ctx.location
ctx.logger
ctx.makeResource()
ctx.message
ctx.modal
ctx.model
ctx.notification
ctx.off()
ctx.on()
ctx.openView()
ctx.render()
ctx.request()
ctx.requireAsync()
ctx.resource
ctx.route
ctx.router
ctx.setValue()
ctx.sql
ctx.t()
ctx.view
Previous Pagectx.libs
Next Pagectx.logger
AI 번역 알림

이 문서는 AI에 의해 번역되었습니다. 정확한 정보는 영어 버전을 참조하세요.

#ctx.location

현재 라우트의 위치 정보이며, React Router의 location 객체와 동일합니다. 보통 ctx.router, ctx.route와 함께 사용되어 현재 경로, 쿼리 문자열, hash 및 라우트를 통해 전달된 state를 읽는 데 사용됩니다.

#적용 시나리오

시나리오설명
JSBlock / JSField현재 경로, 쿼리 파라미터 또는 hash에 따라 조건부 렌더링이나 로직 분기를 수행합니다.
연동 규칙 / 이벤트 흐름URL 쿼리 파라미터를 읽어 연동 필터링을 수행하거나, location.state를 기반으로 유입 소스를 판단합니다.
라우트 이동 후 처리대상 페이지에서 ctx.router.navigate를 통해 이전 페이지에서 전달된 데이터를 ctx.location.state로 수신합니다.

주의: ctx.location은 라우팅 컨텍스트가 존재하는 RunJS 환경(페이지 내 JSBlock, 이벤트 흐름 등)에서만 사용할 수 있습니다. 순수 백엔드나 라우팅이 없는 컨텍스트(예: 워크플로우)에서는 값이 비어 있을 수 있습니다.

#타입 정의

location: Location;

Location은 react-router-dom에서 제공되며, React Router의 useLocation() 반환 값과 일치합니다.

#주요 필드

필드타입설명
pathnamestring현재 경로이며, /로 시작합니다 (예: /admin/users).
searchstring쿼리 문자열이며, ?로 시작합니다 (예: ?page=1&status=active).
hashstringhash 세그먼트이며, #으로 시작합니다 (예: #section-1).
stateanyctx.router.navigate(path, { state })를 통해 전달된 임의의 데이터이며, URL에는 표시되지 않습니다.
keystring해당 location의 고유 식별자입니다. 초기 페이지는 "default"입니다.

#ctx.router, ctx.urlSearchParams와의 관계

용도권장 사용법
경로, hash, state 읽기ctx.location.pathname / ctx.location.hash / ctx.location.state
쿼리 파라미터 읽기 (객체 형태)ctx.urlSearchParams를 통해 파싱된 객체를 직접 얻을 수 있습니다.
search 문자열 파싱new URLSearchParams(ctx.location.search)를 사용하거나 직접 ctx.urlSearchParams를 사용합니다.

ctx.urlSearchParams는 ctx.location.search를 파싱하여 생성됩니다. 쿼리 파라미터만 필요한 경우 ctx.urlSearchParams를 사용하는 것이 더 편리합니다.

#예시

#경로에 따른 분기 처리

if (ctx.location.pathname.startsWith('/admin/users')) {
  ctx.message.info('현재 사용자 관리 페이지입니다');
}

#쿼리 파라미터 파싱

// 방법 1: ctx.urlSearchParams 사용 (권장)
const page = ctx.urlSearchParams.page || 1;
const status = ctx.urlSearchParams.status;

// 방법 2: URLSearchParams를 사용하여 search 파싱
const params = new URLSearchParams(ctx.location.search);
const page = params.get('page') || '1';
const status = params.get('status');

#라우트 이동 시 전달된 state 수신

// 이전 페이지에서 이동 시: ctx.router.navigate('/users/123', { state: { from: 'dashboard' } })
const prevState = ctx.location.state;
if (prevState?.from === 'dashboard') {
  ctx.message.info('대시보드에서 이동해 왔습니다');
}

#hash를 이용한 앵커 위치 확인

const hash = ctx.location.hash; // 예: "#edit"
if (hash === '#edit') {
  // 편집 영역으로 스크롤하거나 해당 로직 실행
}

#관련 정보

  • ctx.router: 라우트 탐색 도구입니다. ctx.router.navigate의 state는 대상 페이지에서 ctx.location.state를 통해 가져올 수 있습니다.
  • ctx.route: 현재 라우트 매칭 정보(파라미터, 설정 등)이며, 보통 ctx.location과 함께 사용됩니다.