# Path
Retrieve object value based on string path
# Parameters
import { usePath } from "vue-composable";
const value = usePath(source, path, separator?, notFoundReturn);
| Parameters | Type | Required | Default | Description | 
|---|---|---|---|---|
| source | Object|Ref<Object> |  true |  Object source | |
| path | String|Ref<String> |  true |  string path to value | |
| separator | String |  false |  . |  path separator | 
| notFoundReturn | Function |  false |  Not found or invalid path handler | 
# State
The usePath function exposes the following reactive state:
import { usePath } from "vue-composable";
const name = usePath({ user: { name: "test" } }, "user.name");
// or typed
const name = usePath<string>({ user: { name: "test" } }, "user.name");
| State | Type | Description | 
|---|---|---|
| name | Ref<T> |  Readonly ref with the object value for the path | 
# Access
const o = {
  a: {
    a: 1,
    b: [
      2,
      {
        c: {
          ["a-b-c-d"]: 3
        }
      }
    ]
  }
};
usePath(o, "a[a]"); // result: 1 | equivalent: a.a
usePath(o, "[a]['a']"); // result: 1  | equivalent: a.a
usePath(o, '["a"][`b`][0]'); // result: 2 | equivalent: a.b["0"]
usePath(o, "a.b[1].c[a-b-c-d]"); // result: 3  | equivalent: a.b[1].c["a-b-c-d"]
# Limitations
The access in [] is limited to this regex expression:
 /\[[`'"]?([^`'"\]]*)[`'"]?\]/g
If you want to improve this, please raise an issue (opens new window) or create a PR (opens new window)
# Example
Path example
      Path:
      
 Object
Value:
# Code
<template>
  <div id="format">
    <div>
      <h4>Path example</h4>
      <div>
        Path:
        <input v-model="inputPath" />
      </div>
      <div>
        <p>Object</p>
        <textarea v-text="json" />
      </div>
      <div>
        <p>Value:</p>
        <textarea v-text="inputValue" disabled />
      </div>
    </div>
  </div>
</template>
<script>
import { ref, defineComponent, computed } from "@vue/composition-api";
import { usePath } from "vue-composable";
export default defineComponent({
  name: "path-example",
  setup() {
    const inputPath = ref("user.name");
    const json = ref(JSON.stringify({ user: { name: "test" } }));
    const inputValue = usePath(
      computed(() => JSON.parse(json.value)),
      inputPath,
      ".",
      () => "Not Found"
    );
    return {
      inputPath,
      json,
      inputValue
    };
  }
});
</script>
← format matchMedia →