我使用以下博文中的示例代码制作了一个简单的react应用,此处仅作为引用而已。否则,我对javascript生态系统并不陌生,并试图将几种不熟悉的工具组合在一起(以便学习它们)。
相关地,我的public bool Equals(TestClass other)
{
if (other is null)
return false;
else
return data == other.data;
}
如下所示:
public bool Equals(TestClass other) => !(other is null) && data == other.data;
这似乎正常,并且我页面上的 var jsonData = System.IO.File.ReadAllText(jsonFile);
// De-serialize to object or create new list
var employeeList = JsonConvert.DeserializeObject<List<Student>>(jsonData)
?? new List<Student>();
// Add any new employees
employeeList.Add(new Student()
{
Rollnumber = 1,
StudentName = "Paja1",
Subject = new Subject
{
Id = 1,
Name = "Sub1"
}
});
employeeList.Add(new Student()
{
Rollnumber = 1,
StudentName = "Pera1",
Subject = new Subject
{
Id = 1,
Name = "Sub1"
}
});
// Update json data string
jsonData = JsonConvert.SerializeObject(employeeList,Formatting.Indented);
System.IO.File.WriteAllText(jsonFile, jsonData);
/ store.js
触发器也可以正常工作。请注意,来自import { createStore, applyMiddleware, compose, } from 'redux';
import { connectRouter, routerMiddleware, } from 'connected-react-router';
import thunk from 'redux-thunk';
import { install, } from 'redux-loop';
import createHistory from 'history/createBrowserHistory';
import rootReducer from './modules';
export const history = createHistory();
const initialState = {};
const middleWare = [thunk, routerMiddleware(history),];
const composedEnhancers = compose(
applyMiddleware(...middleWare),
install()
);
const store = createStore(
connectRouter(history)(rootReducer),
initialState,
composedEnhancers
);
export default store;
的{{1}}被称为增强器(?)的一部分,这很好。我的reducer中没有任何Link
调用,我只是插入了Route
命令作为增强器,希望可以添加一些。
这是我的主要install
代码:
redux-loop
同样,这很好。但是,如果我在减速器中的任何位置插入loop
,它将消失。根据文档,这是因为我们需要使用install
中的reducer
。精细。如果我将顶部的导入替换为import { combineReducers, } from 'redux';
import counter from './counter';
import todo from './todo';
export default combineReducers({
counter,
todo,
});
(根本不更改我的化简器,还没有非标准的收益),那么我在库代码中会得到一些完全荒谬的错误:
loop
它持续了很多页,但是问题似乎出在combineReducers
中;我认为这是因为redux-loop
中的import { combineReducers, } from 'redux-loop';
将主减速器的响应类型更改为与ConnectedRouter.js:58 Uncaught TypeError: Cannot read property 'pathname' of undefined
at ConnectedRouter.js:58
at Object.dispatch (redux.js:221)
at dispatch (install.js:66)
at middleware.js:25
at index.js:11
at Object.onLocationChanged (ConnectedRouter.js:154)
at handleLocationChange (ConnectedRouter.js:85)
at new ConnectedRouter (ConnectedRouter.js:94)
at constructClassInstance (react-dom.development.js:11769)
at updateClassComponent (react-dom.development.js:13491)
at beginWork (react-dom.development.js:14090)
at performUnitOfWork (react-dom.development.js:16416)
at workLoop (react-dom.development.js:16454)
at renderRoot (react-dom.development.js:16533)
at performWorkOnRoot (react-dom.development.js:17387)
at performWork (react-dom.development.js:17295)
at performSyncWork (react-dom.development.js:17267)
at requestWork (react-dom.development.js:17155)
at scheduleWork (react-dom.development.js:16949)
at scheduleRootUpdate (react-dom.development.js:17637)
at updateContainerAtExpirationTime (react-dom.development.js:17664)
at updateContainer (react-dom.development.js:17691)
at ReactRoot../node_modules/react-dom/cjs/react-dom.development.js.ReactRoot.render (react-dom.de...
调用中的ConnectedRouter
不兼容。
这是对的问题吗?这个可以解决吗?这两个库可以一起使用吗?
答案 0 :(得分:1)
有一个open issue可以解决这个问题,但是在此之前,还需要进行修改。我用类似这样的名称调用CombineReducers(我使用的是不可变的js。但是,如果不是这样,将其转换为简单代码即可)
import { connectRouter } from 'connected-react-router/immutable';
import { Map } from 'immutable';
//....
const routerReducer = connectRouter(history)(() => fromJS({}));
return combineReducers(
{
foo: fooReducer,
blah: blahReducer,
router: (state, action) => {
const routerStateWrapper = Map({router: state});
const result = routerReducer(routerStateWrapper, action);
return result.get('router');
}
}
)
答案 1 :(得分:1)