@Golopolos

Как передать и изменить значение boolean?

Сломал всю голову. Не пойму почему не меняется boolean в базе(Postgres)

Пытаюсь опубликовать запись со значение is_published: true
Но сохраняет все равно false

В отправке
const handlePublish = () => {
  const newPost = {
      is_published: true
    }
    mutate({newPost})
  };


Mutate
interface MutationParams {
  newPost: {
    is_published: boolean
  }
}
async function addPost({ newPost }: MutationParams) {
  try {
    const res = await axios.post("/api/post", newPost);
    return res.data;
  } catch (err: any) {
    throw err.response.data;
  }
}


На сервере
const newPost = AppDataSource.manager.create(
      Post, {
        is_published: req.body.is_published,
      },
    );
   await AppDataSource.transaction(async (em) => {
      await em.save(newPost);
    });
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
@SergeyO1
Попробуйте что-то из этого:
import React from "react";
import Name from './Name' //Это компонент к которому будет происходить обращение из main, то есть App.jsx или App.js. Таких компонентов может быть сколько угодно
import { useState } from 'react';
import { createContext } from 'react';
export const AppContext = createContext();

function App() {
const [newPost, setNewPost] = useState(false);
return (
newPost,
setNewPost
}}>


);
}

//Компонент Name

import React from "react";
import { useState, useContext } from 'react';
import { AppContext } from "./App";

function Name() {
const {newPost, setNewPost} = useContext(AppContext)
const handlePublish = () => {
setNewPost(true)//В этот момент значение newPost изменится из false на true и в mutate newPost будет передан со значением true
mutate({newPost})
}
};

return (
<>
//Здесь что-то должно выполняться
>
)
}
export default Name;

Можно вообще обойтись без АррContext и решить все в одном компоненте, просто данные будут видны только внутри этого компонента)
import React from "react";
import { useState} from 'react';
function Name() {
const [newPost, setNewPost] = useState(false);
const handlePublish = () => {
setNewPost(true)//В этот момент значение newPost изменится из false на true и в mutate newPost будет передан со значением true
mutate({newPost})
}

};

return (
<>
//Здесь что-то должно выполняться
>
)
}
export default Name;

Еще один вариант:

import React from "react";
import { useState} from 'react';
function Name() {
const [newPost, setNewPost] = useState(false);
const [is_published, setIs_published] = useState(false)
const handlePublish = () => {
setNewPost(true)//В этот момент значение newPost изменится из false на true и в mutate newPost будет передан со значением true
mutate({newPost})
setIs_published(true);
//Можно попробовать так: setIs_published(!is_published);
}
};

return (
<>
//Здесь что-то должно выполняться
>
)
}
export default Name;

В Mutate //Только нужно передать туда параметры:

interface MutationParams {
newPost: {
is_published
}
//is_published ? {newPost} : !is_published
}
Понятное дело что все вышеописанное - просто образец...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы