Я новичок в ReactJS и Context API / Хуки. У меня есть приложение basi c, в котором родительский функциональный компонент передает значения 3 кнопкам. Но проблема в том, что я вижу значение по умолчанию («добро пожаловать») на кнопках, а не значения, которые я установил в контексте.
Context. js:
import React, { useState, useContext, useReducer } from 'react';
const initalDBStates = {Couchbase:[],MongoDB:[],Cassandra:[], jobId: null, results:[],activeDBName: "Welcome"}
export const AppContext = React.createContext(initalDBStates);
TestGrid. js:
import React, { useState, useContext, useReducer } from 'react';
import DBButton from './DBButton';
import {AppContext} from "./Context";
const TestGrid = () => {
const context = useContext(AppContext)
const setActiveDBName = (activeDBName) => {
setDBState({...dbState, activeDBName: activeDBName})
}
const [dbState,setDBState] = useState({...context, updateJobId:updateJobId,updateResults:updateResults,setActiveDBName:setActiveDBName })
return(
<AppContext.Provider value={dbState}>
<div class="dls-gray-02-bg pad " style={{height: '100%', minHeight: '100vh',}}>
<div class="row stack-a">
<div class="display-inline-block">
<DBButton onClick={()=>setActiveDBName("Couchbase")}/>
<DBButton onClick={()=>setActiveDBName("Cassandra")}/>
<DBButton onClick={()=>setActiveDBName("MongoDB")}/>
</div>
</div>
</div>
</AppContext.Provider>
)
}
export default TestGrid;
В конце концов DBBUtton. js:
import React, { useContext } from 'react';
import {AppContext} from "./Context";
const colors = {"Couchbase":"deep-blue", "MongoDB":"green","Cassandra":"bright-blue"};
function DBButton() {
return(
<AppContext.Consumer>
{
(value) => {
let buttonClassName = "btn btn-contextual dls-" + colors[value.activeDBName];
let padClassName = "pad-3 dls-"+ colors[value.activeDBName] + "-bg";
return(
<div className="margin-b">
<div className={padClassName}>
<button className={buttonClassName}>{value.activeDBName}</button>
</div>
</div>)
}
}
</AppContext.Consumer>
)
}
export default DBButton;
3 кнопки должны отображать Couchbase, Cassandra и MongoDB, но вместо этого они показывают белый цвет по умолчанию и значение по умолчанию «Welcome», которое я использовал для инициализации контекста. Может кто-нибудь, пожалуйста, помогите мне с этим? Не могу понять, что я делаю не так!