Skip to content

Commit ca1e8c3

Browse files
committed
feat: fix type-errors
1 parent e705557 commit ca1e8c3

4 files changed

Lines changed: 46 additions & 28 deletions

File tree

pages/index.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
import Head from "next/head";
22
import React, { useState, useCallback } from "react";
33
import { useSelector, useDispatch } from "react-redux";
4-
import { JsonFormatter } from "react-json-formatter";
4+
import JsonFormatter from "react-json-formatter";
55
import { usePostalCodeApi } from "../src/hooks/postalCodeApi";
6-
import { GetAddressFromZip } from "../src/modules/postalCode";
6+
import {
7+
GetAddressFromZip,
8+
ClearPostalCodeAction,
9+
} from "../src/modules/postalCode";
710
import styles from "./styles/Home.module.scss";
811

912
const IndexPage: React.FC<IndexPageProps> = () => {
1013
const dispatch = useDispatch();
11-
const { address } = useSelector((state: IReduxState) => state.address);
1214
const [zipCode, setZipCode] = useState<number | string | null>(undefined);
1315

1416
const onChangeField = useCallback(
@@ -23,16 +25,17 @@ const IndexPage: React.FC<IndexPageProps> = () => {
2325
const addressData = usePostalCodeApi(zipCode);
2426
const addressStings = JSON.stringify(addressData);
2527

26-
const JsonStyle = {
28+
const jsonStyle = {
2729
propertyStyle: { color: "red" },
2830
stringStyle: { color: "green" },
2931
numberStyle: { color: "darkorange" },
3032
};
3133

3234
const getAddress = useCallback(() => {
33-
if (zipCode) {
34-
dispatch(GetAddressFromZip(zipCode));
35+
if (!zipCode) {
36+
return;
3537
}
38+
GetAddressFromZip(zipCode)(dispatch);
3639
}, [dispatch, zipCode]);
3740

3841
return (
@@ -45,8 +48,8 @@ const IndexPage: React.FC<IndexPageProps> = () => {
4548
{addressData?.addressData != undefined ? (
4649
<JsonFormatter
4750
json={addressStings}
48-
tabWith="4"
49-
JsonStyle={JsonStyle}
51+
tabWith={4}
52+
jsonStyle={jsonStyle}
5053
/>
5154
) : (
5255
<p></p>

src/components/Layout.tsx

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
import React, { useEffect } from "react";
2-
import { NextPage } from "next";
32

4-
export type NextPageWithLayout = NextPage & {
5-
Layout?: React.FC;
6-
};
7-
8-
type LayoutProps = {};
3+
export interface LayoutProps {
4+
address?: undefined;
5+
}
96

107
export const Layout: React.FC<LayoutProps> = (props) => {
118
useEffect(() => {
@@ -18,7 +15,7 @@ export const Layout: React.FC<LayoutProps> = (props) => {
1815

1916
return (
2017
<div>
21-
<div>{props.children}</div>
18+
<div>{props.address}</div>
2219
</div>
2320
);
2421
};

src/hooks/postalCodeApi.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const usePostalCodeApi = (zipCode: string | number) => {
88
const { address } = useSelector((state: IReduxState) => state.address);
99

1010
const fetchPostalCodeApi = useCallback(() => {
11-
dispatch(GetAddressFromZip(zipCode));
11+
GetAddressFromZip(zipCode)(dispatch);
1212
}, [dispatch, zipCode]);
1313

1414
return { addressData: address, fetchPostalCodeApi };

src/modules/postalCode.ts

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Dispatch } from "redux";
22
import { createAction, handleActions } from "redux-actions";
33
import axios from "axios";
44
export type AddessFromPostalCodeState = {
5-
address?: string[];
5+
address?: object[];
66
};
77

88
const API_POSTALCODE_ENDPOINT = "https://zipcloud.ibsnet.co.jp/api";
@@ -28,15 +28,19 @@ export const GetPostalCodeAction = createAction(GET_ADDRESS_REQUEST);
2828
export const GetGAddressFromZipSuccessAction =
2929
createAction(GET_ADDRESS_SUCCESS);
3030

31-
export const ClearPostalCodeAction = createAction<void>(CLEAR_ADDRESS);
31+
export const GetGAddressFromZipFailureAction =
32+
createAction(GET_ADDRESS_FAILURE);
33+
34+
export const ClearPostalCodeAction = createAction(CLEAR_ADDRESS);
3235

3336
export const GetAddressFromZip =
3437
(zipCode: string | number) => async (dispatch: Dispatch) => {
35-
dispatch(GetPostalCodeAction());
3638
try {
37-
const result = await axios.get(
38-
API_POSTALCODE_ENDPOINT + "/search?zipcode=" + zipCode
39-
);
39+
dispatch(GetPostalCodeAction());
40+
const result = await axios
41+
.get(API_POSTALCODE_ENDPOINT + "/search?zipcode=" + zipCode)
42+
.catch(GetGAddressFromZipFailureAction());
43+
4044
if (!result) {
4145
return;
4246
}
@@ -47,6 +51,9 @@ export const GetAddressFromZip =
4751
dispatch(GetGAddressFromZipSuccessAction({ address: result.data }));
4852
} catch (e) {
4953
console.error(e);
54+
dispatch(
55+
GetGAddressFromZipFailureAction({ address: undefined, error: e })
56+
);
5057
}
5158
};
5259

@@ -73,12 +80,23 @@ export default handleActions(
7380
address,
7481
};
7582
},
76-
// [CLEAR_ADDRESS]: (state) => {
77-
// return {
78-
// ...state,
79-
// address: undefined,
80-
// };
81-
// },
83+
[GET_ADDRESS_FAILURE]: (state, action) => {
84+
const error = action.payload as Parameters<
85+
typeof GetGAddressFromZipFailureAction
86+
>[0];
87+
88+
return {
89+
...state,
90+
address: undefined,
91+
error,
92+
};
93+
},
94+
[CLEAR_ADDRESS]: (state) => {
95+
return {
96+
...state,
97+
address: undefined,
98+
};
99+
},
82100
},
83101
addressInitialState
84102
);

0 commit comments

Comments
 (0)