因此,我从API中获取数据并将其存储到我的Redux存储区。它是一个对象数组,包含100个It对象。在前端,我显示来自每个对象的4个键。
我现在试图做的是在前端,搜索一个键(姓名或年份),并呈现结果。理想情况下,它将类似于PSQL中的ILIKE
,但甚至只有当e.target.value === obj.super.nested.key || obj.super.nested.key_two would
令人惊奇时才会有结果。
我尝试使用select()
从redux-saga/effects
,但没有任何效果。
我最初尝试的是输入字段的onChange
,将一个操作分派给一个以e.target.value
作为参数的观察者,后者将使用该值作为select()
的参数调用一个函数。
使用PSQL而不是redux saga的代码是:
const [val, setVal] = useState("");
---------------------------------------------
useEffect(() => {
if (val.length >= 3) {
axios.get(`/searchCards/${val}.json`).then(results => {});
} else if (val.length <= 3) {
setCard("");
}
}, [val]);
---------------------------------------------
function handleChange(e) {
e.preventDefault();
setVal(e.target.value);
}
----------------------------------------------
<form noValidate onSubmit={e => this.submit(e)}>
<input
noValidate
name="searchValue"
placeholder="name"
onChange={e => handleChange(e)}
/>
<br />
<br />
<input onChange={e => handleChange(e)} type="date" />
</form>
node.js
app.get("/searchCards/:str.json", (req, res) => {
db.findCard(req.params.str)
.then(results => {
let result = results.rows[0].name;
res.json({ result });
})
.catch(err => {
console.log("error in searching for cards by name: ", err.message);
res.json(null);
});
});
exports.findCard = function findCard(str) {
return db.query(`SELECT * FROM cards WHERE name ILIKE $1 LIMIT 1`, [
str + "%"
]);
};
如何使用redux-saga
实现同样的目标,通过值搜索存储,并返回包含该值的整个对象?
发布于 2019-12-02 11:14:25
如果有人想知道的话,我已经找到了解决办法。关于redux-saga
的文档不是很丰富,所以我做了我知道如何做的唯一方法。
基本上,当组件挂载时,我从api请求数据并存储在redux存储中。一旦它在商店,我就把它渲染在FE上。
因为在改变输入字段时,我只想显示以前显示的数据的某些部分,所以我做了一个三元的,表示如果输入字段值存在/更改,通过存储映射并返回输入value.toLowerCase().startsWithstartsWith(value_in_the_store)
的位置,否则,返回所有数据。
就像一种魅力。
如果有人有别的主意,我很想听听。
https://stackoverflow.com/questions/59132204
复制