Кто-то может знать, как я могу выполнить поиск по столбцу в ReactJS? Я не нашел ничего в Интернете, поэтому я здесь, чтобы попросить о помощи. У меня есть Table
с TextInput
внутри, как это, и я использую Redux.
Проблема в том, что поиск работает нормально, но по всем полям одновременно, вот так:
Вот функция поиска:
useEffect(() => {
setData(
searchText.length === 0
? fournisseurs
: _.filter(fournisseurs, fournisseur => {
return (
fournisseur.raisonSociale
.toLowerCase()
.includes(searchText.toLowerCase()) ||
fournisseur.telephone
.toLowerCase()
.includes(searchText.toLowerCase()) ||
fournisseur.codePostal
.toLowerCase()
.includes(searchText.toLowerCase()) ||
fournisseur.ville
.toLowerCase()
.includes(searchText.toLowerCase()) ||
fournisseur.categorie
.toLowerCase()
.includes(searchText.toLowerCase()) ||
fournisseur.codeFournisseur
.toLowerCase()
.includes(searchText.toLowerCase()) ||
fournisseur.mail.toLowerCase().includes(searchText.toLowerCase())
);
})
);
}, [fournisseurs, searchText]);
Действие Redux:
export function setFournisseursSearchText(event)
{
return {
type : SET_FOURNISSEURS_SEARCH_TEXT,
searchText: event.target.value
}
}
Редуктор (с исходным состоянием):
import * as Actions from '../actions';
const initialState = {
data : [],
searchText: ''
};
const fournisseursReducer = function (state = initialState, action) {
switch ( action.type )
{
case Actions.GET_FOURNISSEURS:
{
return {
...state,
data: action.payload
};
}
case Actions.SET_FOURNISSEURS_SEARCH_TEXT:
{
return {
...state,
searchText: action.searchText
};
}
default:
{
return state;
}
}
};
export default fournisseursReducer;
И textInput
, которые вызывают setFournisseursSearchText
действие из редуктора:
<TextareaAutosize
onChange={ev =>
dispatch(Actions.setFournisseursSearchText(ev))
}
value={searchText}
aria-label="rechercher"
placeholder="Rechercher"
className={classes.textField}
/>
Я в замешательстве, это, вероятно, легко, но я не уверен, как это сделать. Я надеюсь, что я дал понять и спасибо заранее.