前回までの新規作成が無事コンソールに表示されましたら、
そちらの情報をFirebaseに登録してみたいと思います。
目次
編集ファイル名
src/index.js
Firebaseと繋ぐ設定をします。
compose を使用してstoreにまとめます。
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import { createStore, applyMiddleware, compose } from 'redux';
import rootReducer from './store/reducers/rootReducer';
import { Provider } from 'react-redux';
import thunk from 'redux-thunk';
import { getFirebase, reactReduxFirebase } from 'react-redux-firebase';
import { getFirestore, reduxFirestore } from 'redux-firestore';
import fbConfig from './config/fbConfig';
const store = createStore(
rootReducer,
compose(
applyMiddleware(thunk.withExtraArgument({ getFirebase, getFirestore })),
reactReduxFirebase(fbConfig),
reduxFirestore(fbConfig)
)
);
ReactDOM.render(
<Provider store={store}>
<App/>
</Provider>,
document.getElementById('root')
);
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();
src/store/action/index.js
新規作成エラーの為の定数を追加します。
export const CREATE_PROJECT = 'CREATE_PROJECT';
export const CREATE_PROJECT_ERROR = 'CREATE_PROJECT_ERROR';
src/store/action/projectActions.js
アクションの追加です。
Firebaseに情報を追加する処理を書いていきます。
import {
CREATE_PROJECT,
CREATE_PROJECT_ERROR
} from './index';
export const createProject = (project) => {
return (dispatch, getState, { getFirebase, getFirestore }) => {
const firestore = getFirestore();
firestore.collection('projects').add({
...project,
authorFirstName: 'First',
authorLastName: 'Last',
authorId: 12345,
createdAt: new Date()
}).then(() => {
dispatch({ type: CREATE_PROJECT, project })
}).catch((err) => {
dispatch({ type: CREATE_PROJECT_ERROR, err })
})
}
};
src/store/reducers/projectReducer.js
projectAction.js で dispatchをした処理を受け取る為の準備をします。
import {
CREATE_PROJECT,
CREATE_PROJECT_ERROR
} from '../actions';
const initState = {
projects: [
{id: '1', title: 'タイトル1', content: 'テキスト1', authorFirstName: '名前1', createdAt: '6/23'},
{id: '2', title: 'タイトル2', content: 'テキスト2', authorFirstName: '名前2', createdAt: '6/23'},
{id: '3', title: 'タイトル3', content: 'テキスト3', authorFirstName: '名前3', createdAt: '6/23'},
]
};
const projectReducer = (state = initState, action) => {
switch (action.type) {
case CREATE_PROJECT:
console.log('新規作成', action.project);
return state;
case CREATE_PROJECT_ERROR:
console.log('新規作成エラー', action.err);
return state;
default:
return state;
}
};
export default projectReducer;
動作確認
yarn start を実行して、動作を確認してみましょう。
まずは新規作成にて作成をします。
先ほど同様無事コンソールに表示されているのを確認しましょう。
では、Firebaseに移動して、
データベースに情報が登録されているかを確認しましょう。
Firebaseに新しくドキュメントが追加されていたら、成功です。
次は、この登録したデータを表示させていきたいと思います。
https://kazunaka.com/react-firabase-bulletin-board-6/
コメント