Javascript 在Redux中,状态实际上存储在哪里?

Javascript 在Redux中,状态实际上存储在哪里?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我搜索了一下这个问题,但找到了非常模糊的答案。在redux中,我们知道状态存储为对象。但是这个状态实际上存储在哪里呢?它是否以某种方式保存为我们以后可以访问的文件?我所知道的是,它不会以cookie格式或浏览器的本地存储来存储它。Redux中的状态存储在内存中 这意味着,如果刷新页面,该状态将被清除 你可以想象那家商店的样子如下: function createStore(reducer, initialState) { let state = initialState // <--

我搜索了一下这个问题,但找到了非常模糊的答案。在redux中,我们知道状态存储为对象。但是这个状态实际上存储在哪里呢?它是否以某种方式保存为我们以后可以访问的文件?我所知道的是,它不会以cookie格式或浏览器的本地存储来存储它。

Redux中的状态存储在内存中

这意味着,如果刷新页面,该状态将被清除

你可以想象那家商店的样子如下:

function createStore(reducer, initialState) {
  let state = initialState // <-- state is just stored in a variable that lives in memory

  function getState() {
    return state
  }

  function dispatch(action) {

    state = reducer(state, action) // <-- state gets updated using the returned value from the reducer

    return action
  }

  return {
    getState,
    dispatch
  }
}

状态存储在redux存储中。Redux Store是一个全局存储,可在任何地方/任何组件访问

让我们考虑使用第三方API获取数据索引的示例。下面的代码段使用了

componentWillMount
,它将使用redux操作触发一个获取调用

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { fetchDataFromUrl } from '../actions/index.js';


class Indexdata extends Component {


  constructor(props){
    super(props);
    this.state = {
      text: ''
    }
  }


  componentWillMount(){
    let thisVal = this;
      thisVal.props.fetchIndexofData()
  }

  componentWillReceiveProps(nextProps){
    this.setstate({
      text: nextProps.indexData.text
    })
  }

  render(){
    return(
      <div>
        <Navbar />
        <h2 className="prescription-index-title">Index of Data</h2>
      </div>
    )
  }
}

function mapStateToProps(state){
  return{
    indexData: state.fetchedData
  }
}

function mapDisptachToProps(dispatch){
  return {
    fetchIndexofData: () => dispatch(fetchDataFromUrl(access_token))
  };
};

export default connect(mapStateToProps, mapDisptachToProps)(IndexData);
Redux操作将向reducer发送数据,其中状态将在Redux存储中初始化。下面的代码片段是redux reducer

export function fetchedData(state = [], action) {
  switch(action.type) {
    case "INDEX_DATA":
      return action.data;
    default:
      return state; 
  }
}
存储在redux存储中的状态将使用在上述组件中实现的函数
MapStateTrops
进行映射。现在,您可以使用相应组件中的道具访问状态。Lifecyclehook
componentWillReceiveProps
将能够获取状态存储的redux存储


您可以通过在任何组件中使用
store.getState()
来访问状态。使用reducer State的唯一缺点是,当您刷新组件/应用程序时,它将重置状态。有关详细信息,请浏览。

内存?是RAM内存吗?是的。在实验室里,我试图找出他们在干什么。你能帮我找到它吗?状态的要点是它是从世界其他地方封闭的(签出),并且只能使用通过纯函数(动作分派器)公开的严格API进行更改。这意味着状态是局部化的,并且没有副作用。如果您只是将数据传递给所有组件,那么任何组件在任何时候都可以更改该状态,从而产生难以调试的问题和难以解释的代码(状态更改可能随时发生)。@JamesBarrett看起来Redux代码库已转换为TypeScript,并断开了我的所有链接(指向
.js
文件)。现在应该更新。所以,现在,状态存储在redux存储中。redux存储在哪里?redux存储存储在浏览器存储中。这就是为什么在刷新页面时,最终会重新呈现使redux存储重置的组件。不@ThanjayaChakravarthy,它将存储在RAM中。如果不想刷卡,可以使用r教育坚持。
export function fetchedData(state = [], action) {
  switch(action.type) {
    case "INDEX_DATA":
      return action.data;
    default:
      return state; 
  }
}