Я могу видеть все данные, которые мне нужны в состоянии redux из расширений веб-сайта, однако, когда я хочу вытащить их, чтобы использовать в своем компоненте, он сказал, что this.props.rules не определено:
Вот create-store. js:
import {createStore, applyMiddleware} from 'redux';
import mainReducer from './reducers/main-reducer';
import {composeWithDevTools} from 'redux-devtools-extension';
import thunk from 'redux-thunk';
export default () => {
return createStore(mainReducer, composeWithDevTools(
applyMiddleware(thunk)
))
}
Вот mainReducer. js
import {combineReducers} from 'redux';
import rules from './rules-reducer';
export default combineReducers({
rules
});
Вот редуктор правил:
const initialState = {
allRules: [],
singleRule: {}
}
export default (state = {}, {type, payload}) => {
switch(type){
case 'GET_RULES':
console.log('got in get_rules reducer');
return {
...state,
allRules: payload
}
default:
return state;
}
};
Вот getRulesAction:
export const getRulesAction = () => dispatch => {
console.log('got into getrulesaction');
const sheets = Object.entries(document.styleSheets);
let allRules = [];
for(let i = 0; i < sheets.length; i++){
const sheet = sheets[i][1];
const rules = Object.entries(sheet.cssRules);
for(let j = 0; j < rules.length; j++){
// console.log(rules[j][1].cssText);
allRules.push(rules[j][1].cssText);
}
}
dispatch({
type: 'GET_RULES',
payload: allRules
})
};
Вот компонент, который я хочу показать свои данные:
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import {connect} from 'react-redux';
import {getRulesAction} from '../actions/ruleActions';
class Rules extends Component {
componentWillMount() {
this.props.getRulesAction();
console.log('props from will mount', this.props);
}
render(){
console.log(this.props.rules);
const fetchedRules = this.props.rules.map((rule,i) => {
return <li key={i}>{rule}</li>
}
)
return(
<div>
<h2>Component to get rules from the redux store</h2>
{fetchedRules}
</div>
);
}
}
Rules.propTypes = {
getRulesAction: PropTypes.func.isRequired,
rules: PropTypes.array.isRequired,
}
const mapStateToProps = state => ({
rules: state.rules.allRules
})
export default connect(mapStateToProps, {getRulesAction})(Rules);
введите описание изображения здесь