admin管理员组

文章数量:1406950

On a Laravel/Vue site I made editor in both edit and insert mode and I pass task and editMode parameters:

export default defineComponent({
    props: {
        task: {
            type: Object,
            required: false, // In Insert mode property is empty
        },
        editMode: {
            type: Number,
            required: true,
        },

        
    setup(props) {
        let task = ref(props.task)
        let editMode = ref(props.editMode === 1)

        const form = ref({
            id: editMode ? task.value.data.id : '',
            title: editMode ? task.value.data.title : '',
            ...
        })
     

The code above work ok, if editMode is true, but otherwise I got error:

Uncaught (in promise) TypeError: task.value is undefined     

I suppose that in ? : construction task.value.data.id is rendered (I hoped no) anyway, even in case editMode is false. How can I check it and write it in 1 line of code?

"@inertiajs/vue3": "^2.0.0",
"vue": "^3.4.0"
"element-plus": "^2.9.5"

On a Laravel/Vue site I made editor in both edit and insert mode and I pass task and editMode parameters:

export default defineComponent({
    props: {
        task: {
            type: Object,
            required: false, // In Insert mode property is empty
        },
        editMode: {
            type: Number,
            required: true,
        },

        
    setup(props) {
        let task = ref(props.task)
        let editMode = ref(props.editMode === 1)

        const form = ref({
            id: editMode ? task.value.data.id : '',
            title: editMode ? task.value.data.title : '',
            ...
        })
     

The code above work ok, if editMode is true, but otherwise I got error:

Uncaught (in promise) TypeError: task.value is undefined     

I suppose that in ? : construction task.value.data.id is rendered (I hoped no) anyway, even in case editMode is false. How can I check it and write it in 1 line of code?

"@inertiajs/vue3": "^2.0.0",
"vue": "^3.4.0"
"element-plus": "^2.9.5"
Share Improve this question edited Mar 8 at 20:29 halfer 20.4k19 gold badges109 silver badges202 bronze badges asked Mar 7 at 9:37 Petro GromovoPetro Gromovo 2,3019 gold badges54 silver badges126 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 1

I didn't test this but I think it should get rid of that error.

let task = ref(props.task || {})

const form = ref({
            id: editMode.value && task.value?.data?.id ? task.value.data.id : '',
            title: editMode.value && task.value?.data?.title ? task.value.data.title : '',
        })

It's easier just use another object for the insert mode:

Playground

let task = reactive(props.editMode === 1 ? JSON.parse(JSON.stringify(props.task)) : {id: 'new'});

本文标签: javascriptHow to check it and write parameter which can be null in 1 line of codeStack Overflow