@rempei

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

localeCompare を使うのに必要な設定はありますか?

Q&A

Closed

解決したいこと

Reduxの公式チュートリアルその4をしていてlocaleCompareが出てきたのですが、下記のエラーが発生しました。同サイトのRouteコンポーネントのcomponentプロパティのようにもう使えなくなってしまったのでしょうか?

発生している問題・エラー

TypeError: Cannot read properties of undefined 
(reading 'localeCompare')
0 likes

1Answer

当該は

const orderedPosts = posts.slice().sort((a, b) => b.date.localeCompare(a.date))

の部分と思われますが,b.dateundefinedでないことを保証する必要があります.
誤ってdateが空になっているデータがないか確認してください.

1Like

Comments

  1. @rempei

    Questioner

    a.dateもb.dateもコンソールに出してみるとundefinedで
    post.slice()にはid, title, contentしかなくdateがありませんでした。

    ```
    const initialState = [
    { id: "1", title: "First Post!", content: "Hello!"},
    { id: "2", title: "Second Post", content: "More text"},
    ]

    const postsSlice = createSlice({
    name: "posts",
    initialState,
    reducers: {
    postAdded: {
    reducer(state, action) {
    state.push(action.payload)
    },
    prepare(title, content, userId) {
    return {
    payload: {
    id: nanoid(),
    date: new Date().toISOString(),
    title,
    content,
    user: userId
    },
    }
    },
    },
    ```

    prepareがいまいちわかっていないのですが上記は関係あるでしょうか?
  2. @rempei

    Questioner

    次の一文読んだらinitialStateにdateを追加する記述があり解決しました。

Your answer might help someone💌