Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用redux传奇从redux商店获取商品:已解决_Javascript_Reactjs_Redux_Redux Saga - Fatal编程技术网

Javascript 如何使用redux传奇从redux商店获取商品:已解决

Javascript 如何使用redux传奇从redux商店获取商品:已解决,javascript,reactjs,redux,redux-saga,Javascript,Reactjs,Redux,Redux Saga,编辑:结尾处的解决方案 因此,我从API获取了数据,并将其存储到我的Redux存储中。这是一个对象数组,包含100个左右的对象。在前端,我显示了每个对象的4个关键点 我现在要做的是在前端,按键(名称或年份)搜索并呈现结果。理想情况下,它与PSQL中的ILIKE类似,但即使只有当e.target.value==obj.super.nested.key | | obj.super.nested.key|two时才有结果,也会令人惊讶 我尝试过使用redux saga/effects中的select(

编辑:结尾处的解决方案

因此,我从API获取了数据,并将其存储到我的Redux存储中。这是一个对象数组,包含100个左右的对象。在前端,我显示了每个对象的4个关键点

我现在要做的是在前端,按键(名称或年份)搜索并呈现结果。理想情况下,它与PSQL中的ILIKE类似,但即使只有当e.target.value==obj.super.nested.key | | obj.super.nested.key|two时才有结果,也会令人惊讶

我尝试过使用redux saga/effects中的select()但没有效果

我最初尝试的是在更改输入字段时,以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>

我如何通过redux saga实现同样的功能,搜索按值存储并返回包含该值的整个对象


解决方案

如果有人想知道,我已经找到了解决办法。关于redux传奇的文档不是很丰富,所以我用我知道的唯一方法来做

基本上,当组件装载时,我从api请求数据并将其存储在redux存储中。一旦它在商店里,我就在FE上渲染它

因为在更改输入字段时,我只想显示以前显示的数据的某些部分,所以我制作了一个三元结构,表示如果输入字段值存在/更改,则映射到存储并返回输入值所在的位置。toLowerCase()。StartStWithStartSwith(存储中的值),否则,返回所有数据

它就像一个符咒

如果有人有其他想法,我很乐意听听。

解决方案

如果有人想知道,我已经找到了解决办法。关于redux传奇的文档不是很丰富,所以我用我知道的唯一方法来做

基本上,当组件装载时,我从api请求数据并将其存储在redux存储中。一旦它在商店里,我就在FE上渲染它

因为在更改输入字段时,我只想显示以前显示的数据的某些部分,所以我制作了一个三元结构,表示如果输入字段值存在/更改,则映射到存储并返回输入值所在的位置。toLowerCase()。StartStWithStartSwith(存储中的值),否则,返回所有数据

它就像一个符咒


如果有人有其他想法,我很乐意听到。

如果你认为解决这个问题的方法对其他人有帮助,你可以发布自己问题的答案,并将其勾选为已接受(这是StackOverflow相当于标题中论坛风格的“已解决”),在主题中添加“已解决”并不是StackOverflow的工作方式,也不是添加问题中的“解决方案”部分。
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 + "%"
    ]);
};