Skip to main content

React Native Reducer Action Notes

 
1. Create action types : types.js

export const LIST_FACET         = 'view_facet_list';
export const LIST_FACET_FAILED  = 'facet_list_failed';
export const LIST_FACET_SUCCESS = 'facet_list_success'; 
 
2. Create junction file : index.js

export * from './CategoryActions';
export * from './FacetAction';


3. Create action file : action.js

import {listproductsAPI} from '../Api/methods/productActionsAPI';
import {
  LIST_PRODUCTS,
  PRODUCT_LIST_FAILED,
  PRODUCT_LIST_SUCCESS
} from './types';

export const productsFetch = () => {
  return (dispatch) => {
    dispatch({ type: LIST_PRODUCTS });
    listproductsAPI()
    .then(productsData => productListResponse(dispatch, productsData.result.docs))
    .catch(error => productlistFail(dispatch, "Products Not Found. Something went wrong. Please try again."));
 
  };
};

const productListFail = (dispatch, error) => { 
  dispatch({
    type: PRODUCT_LIST_FAILED,
    payload: error
  });
};

const productListSuccess = (dispatch, productList) => {
  dispatch({
    type: PRODUCT_LIST_SUCCESS,
    payload: productList
  });
};

const productListResponse = (dispatch, productList) => {
  if(productList._ERROR_MESSAGE_ === undefined || productList._ERROR_MESSAGE_ === null)
  {
    productListSuccess(dispatch, productList);
  }
  else
  {
   productListFail(dispatch,productList._ERROR_MESSAGE_);
   
  }
};


4. Create API constants : ApiConstants.js

export const BASE_URL = 'https://hc-india.hotwax.co';
export const LOGIN = '/api/login';
export const PRODUCT_LIST = '/api/b2c/products';


5. Create API file to fetch data : actionAPI.js

import Api from '..';
import { PRODUCT_LIST } from '../ApiConstants';

export default function listfacetsAPI(facet) {

    return Api(
        PRODUCT_LIST + '?facetList=' + facet,
        null,
        'get',
        null
    );
}


5. Create reducer to set state : facetReducer.js

import {
    LIST_FACET,
    LIST_FACET_FAILED,
    LIST_FACET_SUCCESS
  } from '../actions/types';
 
  const INITIAL_STATE = {
    facetData:[],
    error: null,
    loading: false
  };
 
  export default (state = INITIAL_STATE, action) => {
    switch (action.type) {    
      case LIST_FACET:
        return { ...state, loading: true, error: '' };
      case LIST_FACET_SUCCESS:
        return { ...state, ...INITIAL_STATE, facetData: action.payload, error: '', loading: false };
      case LIST_FACET_FAILED:
        return { ...state, error: action.payload, loading: false };
      default:
        return state;
    }
  };

6. Combine Reducers : index.js

import { combineReducers } from 'redux';
import AuthReducer from './AuthReducer';
import ProductListReducer from './ProductListReducer';
import FacetReducer from './FacetReducer';

export default combineReducers({
  auth: AuthReducer,
  products : ProductListReducer,
  facets : FacetReducer
});


7. Import required action from defined actions and combine reducers

import { connect } from 'react-redux';
import { categoriesFetch, facetFetch } from '../../actions';

8. Trigger Actions on Page.js

     this.props.facetFetch('categoryFacet');

Comments

Popular posts from this blog

SETUP REST API IN CI

1. Create Rest_controller.php inside controllers and paste code: <?php defined('BASEPATH') OR exit('No direct script access allowed'); require APPPATH . '/libraries/API_Controller.php'; class Rest_controller extends API_Controller { public function __construct() { parent::__construct(); } public function index() { $this->api_return(             [ 'status' => true,                'result' => "Welcome to Testservices."             ],         200); } } ?> 2. Create api.php inside config and paste code : <?php defined('BASEPATH') OR exit('No direct script access allowed'); /**  * API Key Header Name  */ $config['api_key_header_name'] = 'X-API-KEY'; /**  * API Key GET Request Parameter Name  */ $config['api_key_get_name'] = 'key'; /**  * API Key POST Request Parameter Name ...

Array Difference, Radio Button Js,

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("e"=>"red","f"=>"green","g"=>"blue"); $result=array_diff($a1,$a2); print_r($result); ______________________________________________________ <script type="text/javascript">  $(document).ready(function(){       $("input[type='radio']").click(function(){             var radioValue = $("input[name='duration']:checked").val();             if(radioValue){                 alert("Your are a - " + radioValue);             }         });  }); </script>   $(document).on("click", ".upappdesc", function(){ // alert($(this).data('id'));  var option = $(this).data("cat").split(",");  // alert($(this).data(...

KrutiDev To Unicode Conversion

http://wrd.bih.nic.in/font_KtoU.htm ___________________________________ <html> <head> <title>KrutiDev <=> Unicode Conversion</title> </title> <link rel="stylesheet" href="style.css">       <script src='script.js'></script> </head> <!--       body of the HTML starts here. one text box is provided each for input and output. --> <body bgcolor='#99CCFF'> <P style='text-align:center; font-family: Arial, Helvetica, sans-serif; font-size: 14pt; font-weight:bold; background-color: #FF6600; color: #FFFFFF'> Conversion between Krutidev-010 and Unicode क्रुतिदेव-०१० और यूनिकोड के बीच रूपांतरण </P> <form name="form1"> <p style='font-size:10pt'>क्रुतिदेव-०१० (Kruti Dev 010) फॉन्ट में टंकिट टेक्स्ट को "क्रुतिदेव-०१०" नामक टेक्स्ट बॉक्स में टाईप या पेस्ट करें तथा इसे यूनिकोड में रूपांतरित करने के लिए अधोमुख तीर वाल...