Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用async/await创建一个存储时会给出以下提示:“No No No modHFGen.dll;警告:失败的道具类型:道具'store.subscribe'`_Javascript_Reactjs_Redux_Async Await - Fatal编程技术网

Javascript 使用async/await创建一个存储时会给出以下提示:“No No No modHFGen.dll;警告:失败的道具类型:道具'store.subscribe'`

Javascript 使用async/await创建一个存储时会给出以下提示:“No No No modHFGen.dll;警告:失败的道具类型:道具'store.subscribe'`,javascript,reactjs,redux,async-await,Javascript,Reactjs,Redux,Async Await,我试图异步加载存储,但出现错误。由于firebase/firestore中间件(400kb+),我尝试这样做是为了最终延迟加载存储。如果我能让这个测试工作,我会动态导入。但是,提供商似乎不喜欢这样。有人能提出一个工作建议吗?我已经画了一支笔来说明 HTML: JS: const thunk=reduxtunk.default const{Provider,connect}=ReactRedux const{createStore,applyMiddleware}=Redux 类应用程序扩展了Re

我试图异步加载存储,但出现错误。由于firebase/firestore中间件(400kb+),我尝试这样做是为了最终延迟加载存储。如果我能让这个测试工作,我会动态导入。但是,提供商似乎不喜欢这样。有人能提出一个工作建议吗?我已经画了一支笔来说明

HTML:

JS:

const thunk=reduxtunk.default
const{Provider,connect}=ReactRedux
const{createStore,applyMiddleware}=Redux
类应用程序扩展了React.Component{
handleAdd=()=>{
this.props.addValueLazy()
}
handleCut=()=>{
this.props.cutValue()
}
render(){
const{value}=this.props
返回(
柜台
)
}
}
常量计数器=({value,onAdd,onCut})=>(
{value}
懒散添加
削减
)
const ActionTypes={
添加值:“添加值”,
剪切值:“剪切值”
}
功能图DispatchToprops(调度){
返回{
addValueLazy:()=>分派(addValueLazy()),
cutValue:()=>分派(cutValue()),
派遣
}
}
函数MapStateTops(状态){
返回{
值:state.value
}
}
常量initialState={value:0}
功能计数器(状态=初始状态,动作){
开关(动作类型){
案例操作类型。添加值:
返回{
值:state.value+1
}
案例ActionTypes.CUT_值:
返回{
值:state.value-1
}
违约:
返回状态;
}
}
函数addValueLazy(){
返回功能(调度){
返回setTimeout(()=>dispatch(addValue()),300)
}
}
函数addValue(){
返回{
类型:ActionTypes.ADD\u值
}
}
函数cutValue(){
返回{
类型:ActionTypes.CUT\u值
}
}
const AppWithState=connect(mapStateToProps、mapDispatchToProps)(应用程序)
异步函数storeMaker(){
返回等待createStore(计数器、初始状态、,
applyMiddleware(thunk)
)
}
const store=storeMaker();
常量根=()=>(
)
ReactDOM.render(
,
document.querySelector(“#root”),
)

异步函数总是返回一个无效的存储类型的承诺,使
storeMaker
成为常规函数。等待
createStore
无论如何都不会有任何作用。Hi Asaf Aviv,感谢您的留言。你建议如何实现我的目标?非常感谢。
div#root
const thunk = ReduxThunk.default
const { Provider, connect } = ReactRedux
const { createStore, applyMiddleware } = Redux

class App extends React.Component {
  handleAdd = () => {
    this.props.addValueLazy()
  }
  handleCut = () => {
    this.props.cutValue()
  }
  render() {
    const { value } = this.props
    return (
      <div className="wrapper">
        <h1 className="title">Counter</h1>
        <Counter 
          value={value}
          onAdd={this.handleAdd}
          onCut={this.handleCut}
        />
      </div>
    )
  }
}

const Counter = ({ value, onAdd, onCut }) => (
  <section className="count-container">
    <div className="value">{value}</div>
    <div className="buttonGroup">
      <button onClick={onAdd}>LAZY ADD</button>
      <button onClick={onCut}>CUT</button>            
    </div>
  </section>
)

const ActionTypes = {
  ADD_VALUE: 'ADD_VALUE',
  CUT_VALUE: 'CUT_VALUE'
}

function mapDispatchToProps(dispatch) {
  return {
    addValueLazy: () => dispatch(addValueLazy()),
    cutValue: () => dispatch(cutValue()),
    dispatch
  }
}
function mapStateToProps(state) {
  return {
    value: state.value
  }
}
const initialState = { value: 0 }
function counterReducer(state = initialState, action) {
  switch(action.type) {
    case ActionTypes.ADD_VALUE:
      return {
        value: state.value + 1
      }
    case ActionTypes.CUT_VALUE:
      return {
        value: state.value - 1
      }
    default: 
      return state;
  }
}
function addValueLazy() {
  return function(dispatch) {
    return setTimeout(()=>dispatch(addValue()), 300)
  }
}
function addValue() {
  return {
    type: ActionTypes.ADD_VALUE
  }
}
function cutValue() {
  return {
    type: ActionTypes.CUT_VALUE
  }
}
const AppWithState = connect(mapStateToProps, mapDispatchToProps)(App)


async function storeMaker() {
  return  await createStore(counterReducer, initialState,
  applyMiddleware(thunk)
)

}

const store = storeMaker();


const Root = () => (
  <Provider store={store}>
    <AppWithState />
  </Provider>
)
ReactDOM.render(
  <Root />,
  document.querySelector('#root'),
)