SpringBootで値をセッション保持する(axiosからリクエストを投げる場合)
SpringBoot側で値を保持してほしいのになかなかできなくて困ってたが、時間が経ってゆっくり考えたら案外簡単にできた。
SpringBoot側
@RestController public class IndexController { @Autowired private AbcData abc; @PostMapping("/") @CrossOrigin(origins = { "http://localhost:3000/" }, allowCredentials = "true") public String postIndex() { abc.setA("test"); return "test"; } }
@Data @Component @Scope(value= "session", proxyMode = ScopedProxyMode.TARGET_CLASS) public class AbcData { private String a; }
axios側(React)
export const App = () => { return ( <div> <button onClick={async () => { const res = await axios.post<string>("http://localhost:8080/", null, {withCredentials: true}); console.log(res.data) }}>aaaaa</button> </div> ); }
React.VFCとReact.FCの違い
React.FCはchildrenを持っている。
実装
VFC
export const Vfc: React.VFC = () => { return ( <div>aaa</div> ); };
FC
export const Fc: React.FC = ({children}) => { return ( <div>children</div> ); };
呼び出し元
import { Vfc } from './components/Vfc'; import { Fc } from './components/Fc'; export const App: React.VFC = () => { return ( <div className="p-8"> <Vfc /> <Fc>test</Fc> </div> ); };
childrenはタグの中身っぽくなってる。 propsにコンポーネントをまるまる渡すのが面倒なときはこっちのほうが入れ子でかけるからいいかもしれない。
コンポーネント
引数無し
実装
export const Component: React.VFC = () => { return ( <div> <h2>Componentです</h2> </div> ); };
呼び出し元
import { Component } from './components/Component'; export const App: React.VFC = () => { return ( <div> <Component /> </div> ); };
引数有り
実装
type Props = { aaa: string }; export const Component: React.VFC<Props> = (props: Props) => { return ( <div> <h2>Componentです{props.aaa}</h2> </div> ); };
呼び出し元
import { Component } from './components/Component'; export const App: React.VFC = () => { return ( <div> <Component aaa="aaaa"/> </div> ); };
プログラミングブログ
よくあるプログラミングについて自分が学んだことをまとめるためのブログです。
よろしくお願いいたします。